Вопрос

Я пытаюсь заставить Pellet распространять свойства от классов вплоть до отдельных лиц, принадлежащих к этим классам.Например, если у меня есть класс A со свойством X и Индивидуум B с rdf:type=Class A, я хочу, чтобы Индивидуум B имел свойство X после запуска средства аргументации.Я использую технику включения цепочки свойств, на которую ссылается OWL 2 Новые функции Страница.Этот метод отлично работает, если я использую свои собственные пользовательские свойства в цепочке свойств, но он не сработает, если я попытаюсь использовать сам rdf: type.Вот несколько соответствующих фрагментов моего RDF / XML.

Онтологический класс (сгенерированный Jena;обратите внимание на свойство "spread", поскольку это то, что я пытаюсь распространить на индивидуумов класса 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>

Само свойство "Spread" (написано мной вручную, не сгенерировано с помощью 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.

Кто-нибудь может пролить какой-нибудь свет на то, что может происходить?Я был бы действительно признателен за любую помощь, которую кто-либо мог бы оказать.

Это было полезно?

Решение

Очень важная Правка

На самом деле оказывается, что распространение свойств возможно в пределах области OWL DL.Например, если вы хотите распространить свойство spread со значением simpleSpread (предполагая, что оба уже определены в вашем RDF), вы могли бы сделать что-то вроде этого (в RDF / XML):

  <rdf:Description rdf:about="http://family/person">
    <rdfs:subClassOf>
        <owl:hasValue rdf:resource="http://spread/simpleSpread"/>
        <owl:onProperty rdf:resource="http://spread/hasSpread"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
    </rdfs:subClassOf>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  </rdf:Description> 

Теперь это уже не так важно

Хорошо, итак, для полноты информации я опубликую соответствующую информацию об ответе здесь.Этот материал получен в результате общения с людьми из списка рассылки pellet-users.Поток заархивирован и начинается с моего начальное сообщение.Следите за темой, чтобы узнать, что произошло в деталях.

По существу, СОВА ДЛ не допускает "отражения" встроенных свойств и типов данных.Разрешение этого может нарушить разрешимость за полиномиальное время, гарантируемую OWL DL.Для того чтобы достичь этого, вы должны использовать Профиль OWL RL OWL Full, который одинаково обрабатывает все вещи в OWL, тем самым позволяя использовать вывод над rdf:type.

Основная проблема с этим заключается в поиске аргументатора (или комбинации аргументов), которые поддерживают как DL, так и RL, поскольку RL намного легче и менее выразителен, чем DL (не говоря уже о том, что не гарантируется разрешимость за полиномиальное время).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top