Protege: проблема с определением эквивалентного класса

Кажется, в 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, что неверно.

введите здесь описание изображения

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

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

введите здесь описание изображения


person alex    schedule 12.01.2020    source источник
comment
это не ошибка, вы просто ошиблись здесь. в вашей онтологии указано A EquivalentTo (p1 min 1), что означает A SubclassOf (p1 min 1) и (p1 min 1) SubclassOf A. Ваш человек принадлежит (p1 min 1), следовательно, он также принадлежит A. существует огромная разница между наличием i) двух аксиом A EquivalentTo B1, A EquivalentTo B2 и ii) A EquivalentTo (B1 and B2). Из i) вы получаете B1 SubclassOf A и B2 SubclassOf A, а ii) приводит к (B1 and B2) SubclassOf A. Оба не семантически эквивалентны, вам нужно создать свой собственный пример из реальной жизни, чтобы понять это.   -  person UninformedUser    schedule 13.01.2020


Ответы (1)


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

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

person Ignazio    schedule 12.01.2020
comment
спасибо. ссылаясь на Практическое руководство по построению OWL Ontologies edition 1.3 Мэтью Хорриджа, в упражнении 20 есть два выражения класса для MargheritaPizza: hasTopping some MozarellaTopping, hasTopping some TomatoTopping. и в описании говорится, что a MargheritaPizza is Названная пицца, в которой есть по крайней мере один вид начинки из моцареллы и по крайней мере один вид начинки из томатов.. что вы думаете об этой фразе? - person alex; 13.01.2020
comment
На страницах 44-45 этого документа Маргарита описывается как подкласс ограничений по свойствам и как подкласс ограничений по свойствам, имеющий И помидоров и моцареллы в качестве наполнителя. Мой ответ относится к эквивалентности, а не к аксиомам подклассов. - person Ignazio; 13.01.2020
comment
Я понимаю ваше объяснение об эквивалентном классе. Но давайте посмотрим на тему подкласса. Вы имеете в виду, что его можно объявить: MargheritaPizza: hasTopping some MozarellaTopping, hasTopping some TomatoTopping , и объяснить на родном языке как a MargheritaPizza is a NamedPizza that has at least one kind of MozzarellaTopping and at least one kind of TomatoTopping? если да, то как объяснить (hasTopping some MozarellaTopping) AND (hasTopping some TomatoTopping) на родном языке? - person alex; 13.01.2020
comment
Как суперкласс в аксиоме подкласса, естественный язык и семантическое объяснение совпадают. Оба определяются как необходимые и только необходимые условия. Наличие моцареллы и помидоров не является достаточным условием для того, чтобы быть маргаритой. - person Ignazio; 13.01.2020
comment
это правда. Для подкласса он содержит A SubClassOf B, а A SubClassOf C совпадает с A SubClassOf (B and C). Но это не относится к эквивалентности классов, в этом весь смысл. Поскольку наличие A EquivalentTo B и A EquivalentTo C не логически эквивалентно A EquivalentTo (B and C), это гораздо более сильное ограничение. - person UninformedUser; 13.01.2020
comment
@AKSW спасибо. это именно то, что я ждал услышать! - person alex; 13.01.2020