Hi

I think I understand correctly owl:allValuesFrom and owl:someValuesFrom. More specifically I understand that an owl:allValuesFrom restriction on a property also applies to individuals that don't have a value for that property. What I don't quite understand is how the reasoner uses an owl:allValuesFrom in that case :

:hasHouse rdf:type owl:ObjectProperty ;          
          rdfs:range :House ;          
          rdfs:domain :Human .

:House rdf:type owl:Class .
:Human rdf:type owl:Class .

:Igloo rdf:type owl:Class ;
       rdfs:subClassOf :House .

:IglooInhabitants rdf:type owl:Class ;    
                  owl:equivalentClass [ rdf:type owl:Restriction ;
                                        owl:onProperty :hasHouse ;
                                        owl:allValuesFrom :Igloo
                                      ] ;
                  rdfs:subClassOf :Human .

The result of the inference is "Human equivalentClass owl:Thing". Why ? can somebody clarify with its own words the explanation of that inference given by Protégé :

  • IglooInhabitants subclassOf Human
  • hasHouse domain Human
  • IglooInhabitants equivalentTo hasHouse only Igloo

I would really like to express "Igloo inhabitants are all the humans that have an igloo as their house" (whether they have only igloos as their house or at least one igloo as their house doesn't really matter for the moment, I am still experimentating for the best solution). Does using universal quantifier makes sense in that case ? what would be the different modeling alternatives, and which one is the closest to what I want to express :

  • IglooInhabitants subClassOf Human and IglooInhabitants subClassOf hasHouse some Igloo
  • IglooInhabitants subClassOf Human and IglooInhabitants subClassOf hasHouse only Igloo
  • IglooInhabitants subClassOf Human and IglooInhabitants equivalentTo hasHouse some Igloo
  • IglooInhabitants subClassOf Human and IglooInhabitants equivalentTo hasHouse only Igloo (well, obviously this one doesn't work)
  • IglooInhabitants subClassOf hasHouse only Igloo
  • IglooInhabitants subClassOf hasHouse some Igloo
  • IglooInhabitants equivalentTo hasHouse only Igloo
  • IglooInhabitants equivalentTo hasHouse some Igloo
  • IglooInhabitants subClassOf Human and IglooInhabitants equivalentTo hasHouse only Igloo and hasHouse min 1

Thanks

asked 21 Feb '13, 04:44

ThomasFrancart's gravatar image

ThomasFrancart
89229
accept rate: 30%


The result of the inference is "Human equivalentClass owl:Thing". Why ?

The axiom IglooInhabitants equivalentTo hasHouse only Igloo implies that everything that does not have a house is an igloo inhabitant, and igloo inhabitants are human. Everything that does have a house, whatever it is, is a human too, because of axiom hasHouse domain Human. So everything is a human.

"Igloo inhabitants are all the humans that have an igloo as their house"

If you want to express this, you need at least to say that igloo inhabitants have some igloo. I suggest:

IglooInhabitant  subClassOf  hasHouse some Igloo

You can also change the subClassOf above into an equivalentWith, if this is what you want. Then it's up to you whether a person who has another house, not necessarily an igloo, should be classified as an igloo inhabitant or not. That is:

IglooInhabitant  equivalentWith  (hasHouse some Igloo and hasHouse only Igloo)

In any case, you must have a clear understanding of what an igloo inhabitant is before we can tell you how it should be modelled in OWL. You must also be clear about what hasHouse means. In your model, a house can only belong to a human, not to a company or a pixie. Too bad Santa's magical elves cannot own an igloo!

link

answered 21 Feb '13, 08:03

Antoine%20Zimmermann's gravatar image

Antoine Zimm... ♦
10.0k514
accept rate: 32%

Thanks for your explanations, that's clear. Going through the excellent Pizza tutorial also helped me understand it is common to use both universal and existential quantifier on the same property as you suggested.

(22 Feb '13, 04:03) ThomasFrancart ThomasFrancart's gravatar image
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×592
×86
×76

Asked: 21 Feb '13, 04:44

Seen: 868 times

Last updated: 22 Feb '13, 04:03