Protege: проблема определения эквивалентного класса - PullRequest
0 голосов
/ 12 января 2020

Кажется, есть ошибка в Protege5 . примерная онтология определяется следующим образом:

<?xml version="1.0"?>
<rdf:RDF xmlns="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#"
     xml:base="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:xml="http://www.w3.org/XML/1998/namespace"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
    <owl:Ontology rdf:about="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144"/>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Data properties
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#has_something_1 -->

    <owl:DatatypeProperty rdf:about="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#has_something_1">
        <owl:propertyDisjointWith rdf:resource="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#has_something_2"/>
    </owl:DatatypeProperty>



    <!-- http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#has_something_2 -->

    <owl:DatatypeProperty rdf:about="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#has_something_2"/>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Classes
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#classA -->

    <owl:Class rdf:about="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#classA">
        <owl:equivalentClass>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#has_something_1"/>
                <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:minCardinality>
            </owl:Restriction>
        </owl:equivalentClass>
        <owl:equivalentClass>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#has_something_2"/>
                <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:minCardinality>
            </owl:Restriction>
        </owl:equivalentClass>
    </owl:Class>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Individuals
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#ind_1 -->

    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/user/ontologies/2020/0/untitled-ontology-144#ind_1">
        <has_something_1 rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</has_something_1>
    </owl:NamedIndividual>
</rdf:RDF>



<!-- Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi -->

, как показано на рисунке ниже, classA определяется как две отдельные аксиомы has_something_1 min 1 и has_something_1 min 1. и ind_1 имеет только одну аксиому: has_something_1 10.

в этом случае, пеллетные гранулы выводят ind_1 как экземпляр classA, что неправильно.

enter image description here

но как показано на рисунке ниже, если бы classA определение было (has_something_1 min 1 ) and (has_something_2 min 1), гранула не вывела бы ind_1 как classA особь (это правда).

Я уже опубликовал этот вопрос на github

enter image description here

1 Ответ

0 голосов
/ 13 января 2020

Определение класса с двумя аксиомами и определение его с одной аксиомой с соединением между выражениями классов создают очень разные онтологии.

В первом из них выражения двух классов определены эквивалентными по транзитивности, и поэтому Пеллета рисует вывод (правильно). Короче говоря, первая версия имеет A equiv B, A equiv C, а вторая имеет A equiv B and C. В первой версии B equiv C является допустимым умозаключением, а любой человек из B является человеком C.

...