Почему мой выводчик OWL не дает ожидаемых результатов?

Привет, Семантическая паутина,

Я не ожидаю иметь <rdf:type rdf:resource='#Tsunami'> в NamedIndividual: instance_Dromen после вывода приведенного ниже кода OWL. Каким-то образом что-то не так с несоответствием между #Huis и #Auto, или, может быть, я не правильно использую комплемент Of? В результате логического вывода NamedIndividual: instance_Dromen имеет следующий вывод:

-

<rdf:Description rdf:about="http://www.almfluss.com/rdf/0.1/Ontology.owl#instance_Dromen">
    <owl:sameAs rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#instance_Dromen"/>
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Wielen"/>
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Auto"/>
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Onderstel"/>
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Tsunami"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Dromen"/>
  </rdf:Description>

Код OWL, который я использую в качестве ввода для логического вывода:


<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" >
    <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <!ENTITY Ontology201210 "http://www.almfluss.com/rdf/0.1/Ontology.owl#" >
]>

    <rdf:RDF    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
                xmlns="http://www.almfluss.com/rdf/0.1/Ontology.owl#" 
                xmlns:Ontology201210="http://www.almfluss.com/rdf/0.1/Ontology.owl#" 
                xmlns:owl="http://www.w3.org/2002/07/owl#" 
                xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
                xmlns:swrl="http://www.w3.org/2003/11/swrl#" 
                xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
                xml:base="http://www.almfluss.com/rdf/0.1/Ontology.owl#">

    <owl:DatatypeProperty rdf:about="#hasValue"/>

    <owl:Class rdf:about="#Dromen">
        <owl:equivalentClass>
            <owl:Class>
                <owl:unionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Huis"/>
                    <rdf:Description rdf:about="#Auto"/>
                </owl:unionOf>
            </owl:Class>
        </owl:equivalentClass>
        <owl:equivalentClass>
            <owl:Class>
                <owl:complementOf rdf:resource="#Werkloos"/>
            </owl:Class>
        </owl:equivalentClass>
        <owl:equivalentClass>
            <owl:Class>
                <owl:complementOf rdf:resource="#Arbeidsongeschikt"/>
            </owl:Class>
        </owl:equivalentClass>

    </owl:Class>
    <owl:NamedIndividual rdf:about="#instance_Dromen">
                <rdf:type rdf:resource="#Wielen"/>
                <rdf:type rdf:resource="#Onderstel"/>
    </owl:NamedIndividual>

    <owl:Class rdf:about="#Huis">
        <owl:equivalentClass>
            <owl:Class>
                <owl:complementOf rdf:resource="#Tsunami"/>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    <owl:NamedIndividual rdf:about="#instance_Huis"/>

    <owl:Class rdf:about="#Auto">
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Wielen"/>
                    <rdf:Description rdf:about="#Onderstel"/>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
        <owl:disjointWith rdf:resource="#Huis"/>
    </owl:Class>
    <owl:NamedIndividual rdf:about="#instance_Auto"/>

    <owl:Class rdf:about="#Werkloos">
        <owl:equivalentClass>
            <owl:Class>
                <owl:unionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#ZelfOntslag"/>
                    <rdf:Description rdf:about="#Ontslagen"/>
                </owl:unionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    <owl:NamedIndividual rdf:about="#instance_Werkloos"/>

    <owl:Class rdf:about="#Arbeidsongeschikt"/>
    <owl:NamedIndividual rdf:about="#instance_Arbeidsongeschikt"/>

    <owl:Class rdf:about="#Wielen"/>
    <owl:NamedIndividual rdf:about="#instance_Wielen"/>

    <owl:Class rdf:about="#Onderstel"/>
    <owl:NamedIndividual rdf:about="#instance_Onderstel"/>

    <owl:Class rdf:about="#Ontslagen"/>
    <owl:NamedIndividual rdf:about="#instance_Ontslagen"/>

    <owl:Class rdf:about="#ZelfOntslag"/>
    <owl:NamedIndividual rdf:about="#instance_ZelfOntslag"/>

    <owl:Class rdf:about="#Tsunami"/>
    <owl:NamedIndividual rdf:about="#instance_Tsunami"/>
    </rdf:RDF>

Я надеюсь, что кто-нибудь может мне помочь.

Заранее спасибо.

С уважением, Мартейн ван дер Плаат

3 ответа

Решение

Ваш instance_Dromen (назови это i отныне для краткости) определяется как тип Wielen и типа Onderstel, Аргументация, которая приводит к тому, что это тип Tsunami как следует:

  1. вы определили класс Auto быть эквивалентным пересечению Wielen а также Onderstel, следовательно i Предполагается, чтобы иметь тип Auto,
  2. поскольку i имеет тип Autoмы знаем, что это не тип Huis (поскольку эти два класса определены как непересекающиеся).
  3. поскольку Tsunami определяется как дополнение Huis (то есть все, что не является Huis это Tsunami), а также i не тип Huisмы можем сделать вывод, что i это Tsunami,

Проще говоря, то, как моделируется ваша онтология, ведет к каждому Auto быть Tsunami,

Ваша онтология довольно беспорядочная, например, вы сказали, что Auto не связана с Huis, но что Dromen эквивалентен союзу Huis & Auto.

Если вы пишете это от руки, остановитесь. Получите Protege 4 и используйте его для создания своей онтологии. Помимо упрощения написания онтологии, он интегрируется с различными аргументами, поэтому вы можете проверить согласованность и выполнимость прямо в графическом интерфейсе. И вы также сможете использовать объяснения, чтобы рассказать вам, почему был сделан конкретный вывод.

Наконец, это почти всегда тот случай, когда вы хотите subClassOf, а не эквивалентный. Эквивалентность в отношениях идет в обоих направлениях, что не так часто, как задумал автор.

Я согласен с тем, что написал @Michael. Несколько общих замечаний о представлении кода OWL как части вопроса (Stackru):

  • используйте читабельный синтаксис, то есть избегайте XML и избегайте RDF (вы использовали оба...), поскольку оба излишне многословны для общения между человеком и человеком
  • объясните свое намерение за каждой аксиомой на простом английском
  • использовать английские имена сущностей (среди пользователей Stackru широко не говорят на голландском)
  • удалить ненужные вещи (например, префиксы пространства имен SWRL в этом случае)

После этих изменений у вас может остаться всего несколько строк кода, и проблема с ним может сразу же стать видимой...

Другие вопросы по тегам