【发布时间】:2015-02-16 21:58:06
【问题描述】:
好吧,我对 Prolog 有点陌生,所以我的问题是关于 Prolog 模式/逻辑。
我有一个叫做平板电脑的关系。它有很多参数,比如name、operationSystem、ramCapacity等。我有很多这种关系的对象/谓词,比如
tablet(
name("tablet1"),
operatingSystem("ios"),
ramCapacity(1024),
screen(
type("IPS"),
resolution(1024,2048)
)
).
tablet(
name("tablet2"),
operatingSystem("android"),
ramCapacity(2048),
screen(
type("IPS"),
resolution(1024,2048),
protected(yes)
),
isSupported(yes)
).
和其他一些类似的关系,但参数数量不同。不同对象中的一些属性我不需要,或者我创建了一些平板电脑,有一天又添加了一个字段并开始在新平板电脑中使用它。
有两个问题:
- 我需要在prolog中尽可能使用最灵活的结构。有些平板电脑有属性/innerPredicates,有些没有,但它们都是平板电脑。
- 我需要以最简单的方式访问数据,例如查找所有具有 ramCapacity(1024) 的平板电脑,不包括没有此属性的平板电脑。
- 我确实需要以最简单的方式更改某些属性的值。例如查询 - 将名称为“tablet1”的平板电脑的 ramCapacity 更改为 2048。
- 如果可能的话,在文字编辑器中阅读应该很漂亮:)
这种结构灵活吗?我应该使用另一个吗?我需要额外的规则来操作这个结构吗?这个结构容易用查询改变吗?(我把这个结构保存在一个文件中)。
【问题讨论】: