在不多次复制规则的情况下创建多个skolems的简单方法是什么?
[ AddingMother:
makeSkolem(?mother, "a mother")
->
(?mother rdf:title "mother") (?mother rdf:type _:Mother)
]
[ AddingChild:
(?mother rdf:type _:Mother) makeSkolem(?child, "a child")
->
(?child rdf:title "child") (?child rdf:type _:Child) (?child rdf:hasMother ?mother) (?mother rdf:hasChild ?child)
]
输出结果为:
OYJ0Aokli2TZDVAK4EQzVA== --{title}-> mother
OYJ0Aokli2TZDVAK4EQzVA== --{type}-> :Mother
OYJ0Aokli2TZDVAK4EQzVA== --{hasChild}-> 8xEXOwnWH/tgxFN+HBwNeg==
8xEXOwnWH/tgxFN+HBwNeg== --{title}-> child
8xEXOwnWH/tgxFN+HBwNeg== --{type}-> :Child
8xEXOwnWH/tgxFN+HBwNeg== --{hasMother}-> OYJ0Aokli2TZDVAK4EQzVA==
我想要五个孩子。在这里算可能吗?我在这里有点失落。
答案 0 :(得分:1)
您可以根据需要使用尽可能多的参数,这样您也可以让孩子依赖母亲。例如,这会给你一个独特的孩子每个母亲:
[ AddingChild:
(?mother rdf:type _:Mother) makeSkolem(?child, "a child", ?mother)
->
(?child rdf:title "child") (?child rdf:type _:Child) (?child rdf:hasMother ?mother) (?mother rdf:hasChild ?child)
]
基于此,如果你可以整合某种计数,例如,产生一个索引,那么你可以为每个母亲的每个指数生成一个孩子:
[ AddingChild:
(?mother :hasChildIndex ?index)
(?mother rdf:type _:Mother)
makeSkolem(?child, "a child", ?mother, ?index)
->
(?child rdf:title "child")
(?child rdf:type _:Child)
(?child rdf:hasMother ?mother)
(?mother rdf:hasChild ?child)
]
顺便说一句,您不应该使用标准未定义的命名空间中的属性,例如:
(?child rdf:title "child")
(?child rdf:hasMother ?mother)
(?mother rdf:hasChild ?child)
一些reasoners和RDF处理器会抱怨。