Как вывести человека с более чем двумя свойствами в сове

У меня есть онтология с классами Person и Animal_Lover. Люди являются Animal_Lover, если у них более 2 питомцев. Как я могу сделать это в своей онтологии?

<?xml version="1.0"?>
<rdf:RDF xmlns="http://www.example.com/test"
 xml:base="http://www.example.com/test"
 xmlns:test="http://www.example.com/test#"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:owl="http://www.w3.org/2002/07/owl#"
 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.example.com/test"/>

 <owl:ObjectProperty rdf:about="http://www.example.com/test#hasPet"/>

    <owl:Class rdf:about="http://www.example.com/test#Animal_Lover">
    <owl:equivalentClass>
        <owl:Restriction>
            <owl:onProperty rdf:resource="http://www.example.com/test#hasOwner"/>
            <owl:minQualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">2</owl:minQualifiedCardinality>
            <owl:onClass rdf:resource="http://www.example.com/test#Mammal"/>
        </owl:Restriction>
    </owl:equivalentClass>
    <rdfs:subClassOf rdf:resource="http://www.example.com/test#Person"/>
 </owl:Class>

 <!-- http://www.example.com/test#Mammal -->

 <owl:Class rdf:about="http://www.example.com/test#Mammal"/>

 <!-- http://www.example.com/test#Person -->

 <owl:Class rdf:about="http://www.example.com/test#Person">
    <rdfs:subClassOf rdf:resource="http://www.example.com/test#Mammal"/>
 </owl:Class>
    <!-- http://www.example.com/test#Smith -->

 <owl:NamedIndividual rdf:about="http://www.example.com/test#Smith">
    <rdf:type rdf:resource="http://www.example.com/test#Person"/>
    <test:hasPet rdf:resource="http://www.example.com/test#Lulu"/>
    <test:hasPet rdf:resource="http://www.example.com/test#Nala"/>
    <test:hasPet rdf:resource="http://www.example.com/test#Tank"/>
 </owl:NamedIndividual>

</rdf:RDF>

Я хочу, чтобы Смит был выведен и стал Animal_Lover. Но этот код не работает в owl(или GraphDB). В чем проблема?

Спасибо за вашу помощь.


person HoJin Seo    schedule 05.09.2018    source источник
comment
OWL –> Предположение об открытом мире и нет Предположение об уникальных именах   -  person UninformedUser    schedule 06.09.2018


Ответы (1)


Есть три проблемы:

  1. Во-первых, вполне возможно, что «Нала» и «Танк» — это две клички питомца Лулу. Так что, возможно, у Смита есть только один питомец, которого зовут Лулу, и которого люди почему-то любят называть Налой или Танком.
  2. Во-вторых, вывод может произойти только в том случае, если вы используете свойство hasOnwer. Вместо этого вы используете hasPet.
  3. В-третьих, вы не сказали, что Лула, Нала и Танк — млекопитающие. Если это рыбы, то нельзя сделать вывод, что Смит любит животных (!)
person Antoine Zimmermann    schedule 05.09.2018
comment
Спасибо за ваш ответ - person HoJin Seo; 06.09.2018
comment
Дополнение ОП: stackoverflow.com/questions/52207828/ - person unor; 07.09.2018