这是builtin_owl2-rl.pie行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”建议“这只是代码,请添加说明”
最佳答案
此规则实现https://www.w3.org/TR/owl2-profiles/#cls-oo。owl:oneOf
是原始属性;它的对象是一个列表。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>]
关于owl - owlim中的owl:oneof和toon:oneof有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23509573/