В чем разница между совой:oneof и on:oneof поддержки в owlim?
Это строка buildin_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>]
Некоторые случайные вещи, чтобы успокоить предложение AI AI от stackru "это всего лишь код, добавить объяснение"
1 ответ
Это правило реализует https://www.w3.org/TR/owl2-profiles/.
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/ правильно:
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>]