这是builtin_owl2-rl.py行361
// Part 1 of cls_oo
Id: cls_oo_1
c <owl:oneOf> x
------------------
c <onto:_oneOf> x [Context <onto:_cls_oo>]
// Part 2 of cls_oo
Id: cls_oo_2
c <onto:_oneOf> x [Context <onto:_cls_oo>]
x <rdf:first> y
x <rdf:rest> z
-------------------------------
y <rdf:type> c
c <onto:_oneOf> z [Context <onto:_cls_oo>][Constraint z != <rdf:nil>]一些随机的东西来安抚stackoverflow的"AI“建议”这只是代码,添加解释“
发布于 2017-01-14 03:40:45
此规则实现https://www.w3.org/TR/owl2-profiles/#cls-oo。
owl:oneOf是原始属性;它的对象是list.onto:_oneOf,是用于展开列表的实现属性。它总是放在一个实现上下文onto:_cls_oo中。永远不应返回此上下文中的三元组。现在假设你得到了c owl:oneOf (y1 y2),这实际上意味着
c owl:oneOf [rdf:first y1;
rdf:rest [rdf:first y2;
rdf:rest rdf:nil]]第一条规则将其复制到onto:_oneOf。然后第二条规则产生
y1 rdf:type c.
c onto:_oneOf [rdf:first y2;
rdf:rest rdf:nil]]第二个规则再次执行,并生成
y1 rdf:type c.
y2 rdf:type c.
c onto:_oneOf rdf:nil前两个是您想要推断的内容,第三个是隐藏在实现上下文中的剩余内容。
你拿到这个了吗?如果有,请尝试证明owl:propertyChainAxiom https://www.w3.org/TR/owl2-profiles/#prp-spo2的实现是正确的:
Id: prp_spo2_1
p <owl:propertyChainAxiom> pc
start pc last [Context <onto:_checkChain>]
----------------------------
start p last
Id: prp_spo2_2
pc <rdf:first> p
pc <rdf:rest> t [Constraint t != <rdf:nil>]
start p next
next t last [Context <onto:_checkChain>]
----------------------------
start pc last [Context <onto:_checkChain>]
Id: prp_spo2_3
pc <rdf:first> p
pc <rdf:rest> <rdf:nil>
start p last
----------------------------
start pc last [Context <onto:_checkChain>]https://stackoverflow.com/questions/23509573
复制相似问题