Я пытаюсь заставить Пеллета распространять свойства от классов до лиц, принадлежащих к этим классам. Например, если у меня есть класс A со свойством X и индивидуальный B с rdf: type = Class A, я хочу, чтобы у индивидуального B было свойство X после запуска рассуждения. Я использую технику включения цепочки свойств, указанную на странице OWL 2 Новые функции . Этот метод отлично работает, если я использую свои собственные пользовательские свойства в цепочке свойств, но не работает, если я пытаюсь использовать сам rdf: type. Вот некоторые соответствующие фрагменты моего RDF / XML.
Онтологический класс (сгенерированный Дженой; обратите внимание на свойство «распространения», так как это то, что я пытаюсь распространить на людей класса Person):
<rdf:Description rdf:about="http://family/person">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<owl:sameAs rdf:resource="http://family/person"/>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<owl:equivalentClass rdf:resource="http://family/person"/>
<owl:disjointWith rdf:resource="http://www.w3.org/2002/07/owl#Nothing"/>
<j.1:spread rdf:resource="http://spread/specificSpread"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
Само свойство "Распространение" (написанное мной вручную, не сгенерированное с Jena, поскольку API Jena не поддерживает цепочки свойств объекта):
<rdf:Description rdf:about="http://spread/generalSpread">
<owl:propertyChainAxiom rdf:parseType="Collection">
<owl:ObjectProperty rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
<owl:ObjectProperty rdf:about="http://spread/generalSpread"/>
</owl:propertyChainAxiom>
</rdf:Description>
Прежде чем рассуждать, человек Эдип выглядит так:
<rdf:Description rdf:about="http://family/Oedipus">
<rdf:type rdf:resource="http://family/person"/>
</rdf:Description>
Идея состоит в том, что после рассуждений это будет выглядеть примерно так:
<rdf:Description rdf:about="http://family/Oedipus">
<rdf:type rdf:resource="http://family/person"/>
<j.1:spread rdf:resource="http://spread/specificSpread"/>
</rdf:Description>
У меня такое ощущение, что ссылка на rdf: type как на rdf: resource, вероятно, там, где что-то пошло не так, поскольку я почти уверен, что это не ресурс. Но я не уверен, как это исправить. Я запустил его через программу lint из командной строки Pellet, и у него, похоже, с этим не было проблем, за исключением того, что он создал явную запись для rdf: type, которая выглядела так:
<owl:ObjectProperty rdf:about="&rdf;type"/>
Выглядит немного странно для меня и также может быть намеком на то, что он не понимает мою ссылку на rdf: type.
Может ли кто-нибудь пролить свет на то, что может происходить? Буду очень признателен за любую помощь.