0

I have created this ontology which contains two classes Car, Person and the object property hasCar that has Person as domain and Car as range.

I want to classify individuals(Persons) in multiCarOwner and OnlyCar person, here is the ontology that represent this:

<?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>

However, the reasoner does not give me the result that I want when I create individuals, I want that the "OnlyCar" class has as members: "individuals with exactly 1 Car."

The result of the reasoning is partial, because, the tab of individuals in protegé shows the following:

image 1

image 2

The images above show the "Bob" individual as a CarOwner member but i want that "bob" as member of "onlyCar" class.

-I am facing an OWA problem ? -There is a way to accomplish what i want?

4

1 に答える 1

1

上の画像は、「Bob」個人を CarOwner メンバーとして示していますが、その「bob」を「onlyCar」クラスのメンバーとして使用したいと考えています。-OWA の問題に直面していますか? -私が望むものを達成する方法はありますか?

ボブは車を所有していると言いましたが、ボブが他の車を所有していないとは言いませんでした。そう言わないと、彼が車を 1 台しか所有していないことはわかりません。bob に別の型アサーションを追加する必要があります。つまり、次のようになります。

hasCar のみ {Car_2}

次に、彼がCar_2を所有し、 Car_2のみ を所有していることがわかっているので、 bob が次の要素であると推測できます。

hasCar ちょうど 1 台の車

于 2015-11-16T17:56:07.270 に答える