2015-11-15 6 views
0

Я создал эту онтологию, которая содержит два класса: Car, Person и свойство объекта hasCar, у которого есть Person as domain и Car as range.Как классифицировать людей в классе в соответствии с его мощностью

Я хочу, чтобы классифицировать лиц (лица) в multiCarOwner и OnlyCar человека, здесь онтология, которые представляют это:

<?xml version="1.0"?> 


<!DOCTYPE rdf:RDF [ 
<!ENTITY owl "http://www.w3.org/2002/07/owl#" > 
<!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#" > 
]> 


<rdf:RDF xmlns="http://www.owl-ontologies.com/Car.owl#" 
xml:base="http://www.owl-ontologies.com/Car.owl" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:owl="http://www.w3.org/2002/07/owl#" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 
<owl:Ontology rdf:about="http://www.owl-ontologies.com/Car.owl"/> 



<!-- 
    /////////////////////////////////////////////////////////////////////////////////////// 
// 
// Object Properties 
// 
/////////////////////////////////////////////////////////////////////////////////////// 
--> 




<!-- http://www.owl-ontologies.com/Car.owl#hasCar --> 

<owl:ObjectProperty rdf:about="http://www.owl- ontologies.com/Car.owl#hasCar"> 
    <rdfs:range rdf:resource="http://www.owl-ontologies.com/Car.owl#Car"/> 
    <rdfs:domain rdf:resource="http://www.owl-ontologies.com/Car.owl#Person"/> 
</owl:ObjectProperty> 



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




<!-- http://www.owl-ontologies.com/Car.owl#Car --> 

<owl:Class rdf:about="http://www.owl-ontologies.com/Car.owl#Car"/> 



<!-- http://www.owl-ontologies.com/Car.owl#CarOwner --> 

<owl:Class rdf:about="http://www.owl-ontologies.com/Car.owl#CarOwner"> 
    <owl:equivalentClass> 
     <owl:Class> 
      <owl:intersectionOf rdf:parseType="Collection"> 
       <rdf:Description rdf:about="http://www.owl-ontologies.com/Car.owl#Person"/> 
       <owl:Restriction> 
        <owl:onProperty rdf:resource="http://www.owl-ontologies.com/Car.owl#hasCar"/> 
        <owl:allValuesFrom rdf:resource="http://www.owl-ontologies.com/Car.owl#Car"/> 
       </owl:Restriction> 
       <owl:Restriction> 
        <owl:onProperty rdf:resource="http://www.owl-ontologies.com/Car.owl#hasCar"/> 
        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> 
       </owl:Restriction> 
      </owl:intersectionOf> 
     </owl:Class> 
    </owl:equivalentClass> 
</owl:Class> 



<!-- http://www.owl-ontologies.com/Car.owl#MultiCarOwner --> 

<owl:Class rdf:about="http://www.owl-ontologies.com/Car.owl#MultiCarOwner"> 
    <owl:equivalentClass> 
     <owl:Class> 
      <owl:intersectionOf rdf:parseType="Collection"> 
       <rdf:Description rdf:about="http://www.owl-ontologies.com/Car.owl#CarOwner"/> 
       <owl:Restriction> 
        <owl:onProperty rdf:resource="http://www.owl-ontologies.com/Car.owl#hasCar"/> 
        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality> 
       </owl:Restriction> 
      </owl:intersectionOf> 
     </owl:Class> 
    </owl:equivalentClass> 
</owl:Class> 



<!-- http://www.owl-ontologies.com/Car.owl#OnlyCar --> 

<owl:Class rdf:about="http://www.owl-ontologies.com/Car.owl#OnlyCar"> 
    <owl:equivalentClass> 
     <owl:Class> 
      <owl:intersectionOf rdf:parseType="Collection"> 
       <rdf:Description rdf:about="http://www.owl-ontologies.com/Car.owl#CarOwner"/> 
       <owl:Restriction> 
        <owl:onProperty rdf:resource="http://www.owl-ontologies.com/Car.owl#hasCar"/> 
        <owl:onClass rdf:resource="http://www.owl-ontologies.com/Car.owl#Car"/> 
        <owl:qualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:qualifiedCardinality> 
       </owl:Restriction> 
      </owl:intersectionOf> 
     </owl:Class> 
    </owl:equivalentClass> 
    <rdfs:subClassOf> 
     <owl:Restriction> 
      <owl:onProperty rdf:resource="http://www.owl-ontologies.com/Car.owl#hasCar"/> 
      <owl:onClass rdf:resource="http://www.owl-ontologies.com/Car.owl#Car"/> 
      <owl:qualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:qualifiedCardinality> 
     </owl:Restriction> 
    </rdfs:subClassOf> 
</owl:Class> 



<!-- http://www.owl-ontologies.com/Car.owl#Person --> 

<owl:Class rdf:about="http://www.owl-ontologies.com/Car.owl#Person"/> 



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




<!-- http://www.owl-ontologies.com/Car.owl#Alice --> 

<owl:NamedIndividual rdf:about="http://www.owl-ontologies.com/Car.owl#Alice"> 
    <rdf:type rdf:resource="http://www.owl-ontologies.com/Car.owl#Person"/> 
    <hasCar rdf:resource="http://www.owl-ontologies.com/Car.owl#Car_2"/> 
    <hasCar rdf:resource="http://www.owl-ontologies.com/Car.owl#Car_7"/> 
</owl:NamedIndividual> 



<!-- http://www.owl-ontologies.com/Car.owl#Bob --> 

<owl:NamedIndividual rdf:about="http://www.owl-ontologies.com/Car.owl#Bob"> 
    <rdf:type rdf:resource="http://www.owl-ontologies.com/Car.owl#Person"/> 
    <hasCar rdf:resource="http://www.owl-ontologies.com/Car.owl#Car_2"/> 
</owl:NamedIndividual> 



<!-- http://www.owl-ontologies.com/Car.owl#Car_2 --> 

<owl:NamedIndividual rdf:about="http://www.owl-ontologies.com/Car.owl#Car_2"> 
    <rdf:type rdf:resource="http://www.owl-ontologies.com/Car.owl#Car"/> 
</owl:NamedIndividual> 



<!-- http://www.owl-ontologies.com/Car.owl#Car_7 --> 

<owl:NamedIndividual rdf:about="http://www.owl-ontologies.com/Car.owl#Car_7"> 
    <rdf:type rdf:resource="http://www.owl-ontologies.com/Car.owl#Car"/> 
</owl:NamedIndividual> 



<!-- 
/////////////////////////////////////////////////////////////////////////////////////// 
// 
// General axioms 
// 
/////////////////////////////////////////////////////////////////////////////////////// 
--> 

<rdf:Description> 
    <rdf:type rdf:resource="&owl;AllDifferent"/> 
    <owl:distinctMembers rdf:parseType="Collection"> 
     <rdf:Description rdf:about="http://www.owl-ontologies.com/Car.owl#Car_2"/> 
     <rdf:Description rdf:about="http://www.owl-ontologies.com/Car.owl#Car_7"/> 
    </owl:distinctMembers> 
</rdf:Description> 

Однако рассуждающий не дает мне результат, который я хочу, когда я создаю людей, я хочу, чтобы в классе «OnlyCar» участвовали: «люди с ровно 1 автомобилем».

Результат рассуждений является частичным, потому что, закладка особей в протеже показывает следующее:

image 2

Изображения выше показывают «Боб» отдельных как CarOwner но я хочу, чтобы «bob» был членом класса «onlyCar».

-Вы сталкиваетесь с проблемой OWA? -Вы можете сделать то, что я хочу?

ответ

1

Изображение выше показывает «Боб» человек как член CarOwner, но я хочу, чтобы «боб» в качестве члена класса «onlyCar». - Я столкнулся с проблемой OWA? -То есть способ выполнить то, что я хочу?

Вы сказали, что боб имеет автомобиль, но вы не сказали, что сказал Боб не владеть какой-либо другой автомобиль. Не сказав этого, вы не можете быть уверены, что ему принадлежит только одна машина. Вам нужно добавить еще одно утверждение типа боб, а именно:

только hasCar {Car_2}

Тогда, так как вы знаете, что он владеет Car_2, и вы знаете, что он владеет толькоCar_2, вы сможете сделать вывод, что боб является элементом

hasCar ровно 1 Автомобиль

+0

Привет, Джошуа, спасибо за ответ, у меня есть вопросы. чтобы добавить утверждение «hasCar only {Car_2}», я думаю, что необходимо создать новый класс только для bob, а другой для Alice, это rigth ?, потому что у Алисы могло быть много автомобилей (в примере выше Алиса была хорошо классифицировано), было бы хорошо, если бы люди принадлежали к одному классу (Лицо), есть ли способ сделать это? –

+0

Прошу прощения, я не совсем понимаю, что вы добавили в этот комментарий. Вам не нужно создавать дополнительные (названные) классы для добавления этого утверждения типа. –

+0

Извините Joshua. Я попытался добавить утверждение «hasCar only {Car_2}» в класс Person, потому что «bob» является индивидуумом этого класса. Но, рассудитель дает мне ошибку несоответствия, потому что люди «Car_2» и «Car_7» являются разными, а «Элис» владеет этими автомобилями. –

 Смежные вопросы

  • Нет связанных вопросов^_^