Transitivity isn't working!! Why?

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Transitivity isn't working!! Why?

Alex Macfie
I am defining an OWL ontology that extensively uses transitive
properties. However, I  find that no reasoner infers any transitive
relations. I would naturally expect, if I define property senior_to as
transitive, and assert the following:

Individuals: Alice, Bob, Carol
Alice senior_to Bob
Bob senior_to Carol

 I expect to be able to infer through the transitive senior_to
relationship that
Alice senior_to Carol
Yet the Pellet reasoner does not add any new relationships, and SPARQL
only lists the direct relationships when I do a query like
SELECT ?subject ?object
WHERE { ?subject :senior_to ?object }

What is going on here? What is the point of the "transitive" tick-box
when creating a property if it cannot be used to actually infer
transitive relationships? I am fairly new to OWL and Protege but I know
what transitivity is and what one would expect to infer with a
transitive property. So I find it very frustrating that this elementary
concept doesn't actually seem to *work*.

Regards

Alex

_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Transitivity isn't working!! Why?

Timothy Redmond

In Protege 4, these inferences are easily seen (more below).  I think that the problems you are having are:
  1. Protege 3 does not seem to show these types of inferences.
  2. SPARQL doesn't understand OWL semantics and can't be expected to infer things about transitive properties.  There is SPARQL-DL capability which is supported by pellet but I don't know of a Protege plugin providing a ui for accessing these capabilities.
In the latest Protege 4.1, the following will show these inferences:
  1. If you haven't changed your reasoning preferences, this step is not needed.  Click Reasoner->Configure and ensure that "Object Property Assertions" is selected near the bottom of the displayed inferences tab.
  2. In the reasoner menu, choose a reasoner (HermiT should be there after a fresh install) and then click Reasoner->Start Reasoner.
  3. Go to the individuals tab, select the Class People and then select the user Alice.  You will see a highlighted property towards the right, indicating that Carol is senior_to Alice.  This property value was put there by the reasoner.
You can also do other more complicated queries in the DLQuery tab (which also uses the reasoner).  For example if you put

senior_to value Carol

in the Query widget, select Individuals and click "Execute" you will see that the reasoner knows that both Bob and Alice are senior to Carol.  You can make many different types of queries here.  In particular, you could ask who is junior to Alice with the query

inverse(senior_to) value Alice

More information on the expressions that you can enter in the DLQuery tab can be found here [1].

-Timothy

[1] http://www.co-ode.org/resources/reference/manchester_syntax/

On 11/01/2010 01:58 PM, Alex Macfie wrote:
I am defining an OWL ontology that extensively uses transitive
properties. However, I  find that no reasoner infers any transitive
relations. I would naturally expect, if I define property senior_to as
transitive, and assert the following:

Individuals: Alice, Bob, Carol
Alice senior_to Bob
Bob senior_to Carol

 I expect to be able to infer through the transitive senior_to
relationship that
Alice senior_to Carol
Yet the Pellet reasoner does not add any new relationships, and SPARQL
only lists the direct relationships when I do a query like
SELECT ?subject ?object
WHERE { ?subject :senior_to ?object }

What is going on here? What is the point of the "transitive" tick-box
when creating a property if it cannot be used to actually infer
transitive relationships? I am fairly new to OWL and Protege but I know
what transitivity is and what one would expect to infer with a
transitive property. So I find it very frustrating that this elementary
concept doesn't actually seem to *work*.

Regards

Alex

_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03


_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03

transitivity.owl (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Transitivity isn't working!! Why?

gadeynebram
Hi all,

I'm also using the transitivity relation with protege owl 3.4.

But the log of Pellet indicates that it ignores the transitivity relation because of a cardinality restriction on the object property.

I did not indicate this restriction in with the property itself. The only things I can find are within the necessary and sufficient blok of some classes where I state the following:

1) isPeriodPartOf only abstract_period (with isPeriodPartOf beiing defined as a transitive property.)
2) hasPeriodParts min 2 (with hasPeriodParts beiing the inverse of isPeriodPartOf and also transitive.)

But I would think that such a restriction in a necessary and sufficient block would not generate such a warning in pellet since it is not a global cardinality restriction.

With kind regards
Bram Gadeyne



2010/11/1 Timothy Redmond <[hidden email]>

In Protege 4, these inferences are easily seen (more below).  I think that the problems you are having are:
  1. Protege 3 does not seem to show these types of inferences.
  2. SPARQL doesn't understand OWL semantics and can't be expected to infer things about transitive properties.  There is SPARQL-DL capability which is supported by pellet but I don't know of a Protege plugin providing a ui for accessing these capabilities.
In the latest Protege 4.1, the following will show these inferences:
  1. If you haven't changed your reasoning preferences, this step is not needed.  Click Reasoner->Configure and ensure that "Object Property Assertions" is selected near the bottom of the displayed inferences tab.
  2. In the reasoner menu, choose a reasoner (HermiT should be there after a fresh install) and then click Reasoner->Start Reasoner.
  3. Go to the individuals tab, select the Class People and then select the user Alice.  You will see a highlighted property towards the right, indicating that Carol is senior_to Alice.  This property value was put there by the reasoner.
You can also do other more complicated queries in the DLQuery tab (which also uses the reasoner).  For example if you put

senior_to value Carol

in the Query widget, select Individuals and click "Execute" you will see that the reasoner knows that both Bob and Alice are senior to Carol.  You can make many different types of queries here.  In particular, you could ask who is junior to Alice with the query

inverse(senior_to) value Alice

More information on the expressions that you can enter in the DLQuery tab can be found here [1].

-Timothy

[1] http://www.co-ode.org/resources/reference/manchester_syntax/

On 11/01/2010 01:58 PM, Alex Macfie wrote:
I am defining an OWL ontology that extensively uses transitive
properties. However, I  find that no reasoner infers any transitive
relations. I would naturally expect, if I define property senior_to as
transitive, and assert the following:

Individuals: Alice, Bob, Carol
Alice senior_to Bob
Bob senior_to Carol

 I expect to be able to infer through the transitive senior_to
relationship that
Alice senior_to Carol
Yet the Pellet reasoner does not add any new relationships, and SPARQL
only lists the direct relationships when I do a query like
SELECT ?subject ?object
WHERE { ?subject :senior_to ?object }

What is going on here? What is the point of the "transitive" tick-box
when creating a property if it cannot be used to actually infer
transitive relationships? I am fairly new to OWL and Protege but I know
what transitivity is and what one would expect to infer with a
transitive property. So I find it very frustrating that this elementary
concept doesn't actually seem to *work*.

Regards

Alex

_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03


_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03




--
Bram Gadeyne

_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03
Reply | Threaded
Open this post in threaded view
|

Re: Transitivity isn't working!! Why?

Thomas Russ

On Nov 3, 2010, at 7:23 AM, Bram Gadeyne wrote:

> Hi all,
>
> I'm also using the transitivity relation with protege owl 3.4.
>
> But the log of Pellet indicates that it ignores the transitivity  
> relation because of a cardinality restriction on the object property.
>
> I did not indicate this restriction in with the property itself. The  
> only things I can find are within the necessary and sufficient blok  
> of some classes where I state the following:
>
> 1) isPeriodPartOf only abstract_period (with isPeriodPartOf beiing  
> defined as a transitive property.)
> 2) hasPeriodParts min 2 (with hasPeriodParts beiing the inverse of  
> isPeriodPartOf and also transitive.)
>
> But I would think that such a restriction in a necessary and  
> sufficient block would not generate such a warning in pellet since  
> it is not a global cardinality restriction.

This violates the Structural Specification of OWL 2:
   "transitive properties cannot be used in number restrictions"

Only simple properties can be used in number restrictions (and in some  
other constructs).  This is required to make sure that the  
classification problem is decidable.

Pellet's behavior is presumably due to a desire to try to work with  
the ontology by ignoring the axioms that violate the OWL 2 DL  
restrictions in order to process the widest possible set of  
ontologies.  The other alternative would be to reject the ontology for  
reasoning completely.  So I think the Pellet designers chose a more  
practically useful approach.  I suppose one could debate whether to  
drop transitivity or cardinality restrictions, but one of them needs  
to go in order to satisfy the requirements of OWL 2 DL.


_______________________________________________
protege-owl mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-owl

Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03