Рассуждения с переходными ролями в Protégé

У меня проблема с рассуждениями о переходных ролях в Protégé.

Я создал простую онтологию, которая гласит:

«Любая штанга - часть какого-то двигателя».

«Любой двигатель - часть какой-то машины».

«Отношение PartOf транзитивно».

Я ожидал, что Protégé распознает этот DL как S в DL-метрике и сделает вывод, что «любой стержень является частью некоторой машины», но, похоже, он просто проигнорирует аксиому транзитивности. Вопрос в том, почему.

(Я использовал разные версии Protégé (4.3 и 5.0) и разные средства рассуждений. Я подозреваю, что я не установил какой-то важный параметр флажка.)

Прилагаю свою онтологию:

<?xml version="1.0"?>


<!DOCTYPE Ontology [
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY xml "http://www.w3.org/XML/1998/namespace" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>


<Ontology xmlns="http://www.w3.org/2002/07/owl#"
 xml:base="http://www.semanticweb.org/ирина/ontologies/2015/2/untitled-ontology-9"
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:xml="http://www.w3.org/XML/1998/namespace"
 ontologyIRI="http://www.semanticweb.org/ирина/ontologies/2015/2/untitled-ontology-9">
<Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
<Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/>
<Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/>
<Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
<Declaration>
    <Class IRI="#Car"/>
</Declaration>
<Declaration>
    <Class IRI="#Engine"/>
</Declaration>
<Declaration>
    <Class IRI="#Rod"/>
</Declaration>
<Declaration>
    <ObjectProperty IRI="#isPartOf"/>
</Declaration>
<SubClassOf>
    <Class IRI="#Engine"/>
    <ObjectSomeValuesFrom>
        <ObjectProperty IRI="#isPartOf"/>
        <Class IRI="#Car"/>
    </ObjectSomeValuesFrom>
</SubClassOf>
<SubClassOf>
    <Class IRI="#Rod"/>
    <ObjectSomeValuesFrom>
        <ObjectProperty IRI="#isPartOf"/>
        <Class IRI="#Engine"/>
    </ObjectSomeValuesFrom>
</SubClassOf>
<TransitiveObjectProperty>
    <ObjectProperty IRI="#isPartOf"/>
</TransitiveObjectProperty>
</Ontology>



<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net -->

person Stanislav    schedule 03.03.2015    source источник


Ответы (1)


Я ожидал, что Protégé распознает этот DL как S в DL-метриках.

Он распознает транзитивность и помечает это как +. Общая выразительность - ALE + (ну, наверное, EL + было бы лучше), что правильно, поскольку он еще не видел отрицания.

и сделать вывод, что «любой стержень является частью некоторой машины», но, кажется, просто игнорирует аксиому транзитивности. Вопрос в том, почему.

Ответ двоякий. Непонятно, чего вы здесь ожидали, я полагаю, что вы хотели бы видеть isPartOf some Car в области анонимных подклассов для Rod. Protege этого не делает, потому что в целом такой подход требует классификации имен классов и произвольных выражений, а существует бесконечное количество выражений, которые относятся к любому отдельному классу.

С другой стороны, Protege действительно принимает во внимание аксиому транзитивности. Если вы добавите именованный класс PartOfCar со следующим определением <EquivalentClasses> <Class IRI="#PartOfCar"/> <ObjectSomeValuesFrom> <ObjectProperty IRI="#isPartOf"/> <Class IRI="#Car"/> </ObjectSomeValuesFrom> </EquivalentClasses>

тогда Protege классифицирует как Engine, так и Rod как подклассы PartOfCar.

person Dmitry Tsarkov    schedule 03.03.2015