如果我们将一个变量放在GenericRuleReasoner的头上,而这个变量没有出现在规则的主体中,会发生什么呢?
例如,如果我们有以下规则:
rule1: (?x rdf:type :Person) -> (?y :father ?x)规矩是每个人都有父亲。假设我们有一个三重:a rdf:type :Person,推理者在这里的表现如何?它会创建一个像_x :father :a这样的空节点的新的三元组吗?
发布于 2014-09-22 13:39:25
我想它会抱怨的。毕竟,它是模棱两可的:你的意思是‘有一个?y这样的.’或者“对任何?y .”?
从您所说的话来看,很明显您期望前者,即存在的版本,因为引入bNode就是这样做的。所以试着:
rule1: makeTemp(?y), (?x rdf:type ex:Person) -> (?y ex:fatherOf ?x)或
rule1: makeInstance(?y, ex:father, ?x), (?x rdf:type ex:Person) -> (?y ex:fatherOf ?x)后者将为您提供一个一致的父节点,而前者只是引入一个bNode。
https://stackoverflow.com/questions/25974378
复制相似问题