scheme中的语义列表
我目前正在从事一项实现标准语义网络的工作,我已经超越了迷失。 我有一份全球助理名单:scheme中的语义列表,scheme,semantic-web,predicate,Scheme,Semantic Web,Predicate,我目前正在从事一项实现标准语义网络的工作,我已经超越了迷失。 我有一份全球助理名单: (定义*数据库*”()) 我正在尝试用标准表单填充列表,如下所示 ((hellipcopter (isa (air-vehicle)) (has-part (propeller door))) . . . 从声明中 (has-part helicopter propell
(定义*数据库*”())
我正在尝试用标准表单填充列表,如下所示
((hellipcopter (isa (air-vehicle))
(has-part (propeller door)))
.
.
.
从声明中
(has-part helicopter propeller)
(has-part helicopter door)
(isa helicopter air-vehicle)
这是我的尝试
(define (process-relation rel)
(set! *database* (cons (cons (cons (cadr rel) (car rel)) (caddr rel))*database*)))
以这种可怕的方式打印出来
((helicopter . has-part) . propeller)
((propeller . has-part) . blade)
正如你们所说,我对这个计划还不熟悉,所以我有一些问题
清单是一连串的缺点。例如,如果你计算
”(1.(2.(3)()
,你会得到(1)(2)(3)
,因为当读者阅读虚线表单和列表表单时,打印机会尽可能打印列表表单。例如,如果cdr
是一对或()
则省略
和一对括号。如果链中的最后一个元素不是()
,则它不是一个正确的列表,甚至打印时也需要点格式。例如,”(1.(2.3))
是(12.3)
(列表1 2 3)
与(cons 1(cons 2(cons 3’()))相同。
要修复您使用的
cons
某些位置的编码,您应该使用list
或添加更多cons
,以便值仅位于car
位置 这是有道理的。我不知道列表本身就是这样的。我的最后一个问题是如何将层添加到列表中。所以像直升机一样,haspart和isa@Ayleids您也许应该创建一个过程,该过程接受一个实例和一个语句,然后返回新的实例和语句。例如,(增加进入(直升机);=>(直升机(有部分螺旋桨))
。主过程获取实例列表(数据库)并返回一个新数据库<代码>(更新db'()'(有部分直升机螺旋桨);==>(直升机(有部分螺旋桨))。好卢卡我搞不懂你说的增援进入是什么意思?@Ayleids,这是一个例子。我可以给你另一个(增援进入)(直升机(有部分螺旋桨))(isa直升机飞行器));=>(直升机(isa飞行器))(具有部分螺旋桨))
。它将术语添加到结构中。