RE: "Transitive over" properties

To me, Jos De_Roo's solution looks like a nice one 
illustrating the complementary roles of rules and ontology.

But, it'd be more concise to me if there were two rules;
one for expressing the semantics of owl:TransitiveProperty,
and another for relating 'worksFor' and 'consistsOf'. Here's
my take:

[Ontology Part]
:consistsOf a owl:TransitiveProperty.
:aCompany :consistsOf :rAndD.
:rAndD :consistsOf :gSw.
:gSw :consistsOf :gSwBe.
:mk :worksFor :gSwBe.

[Rule Part 1: OWL Semantics]
if owl:TransitiveProperty(?p) and ?p(?x,?y) and ?p(?y,?z)
then ?p(?x,?z);

[Rule Part 2: TransitiveOver Property]
if worksFor(?a,?b) and consistsOf(?b,?c) 
then worksFor(?a,?c);

We need semantic web rules.

Minsu

> -----Original Message-----
> From: www-rdf-logic-request@w3.org 
> [mailto:www-rdf-logic-request@w3.org] On Behalf Of Jos De_Roo
> Sent: Monday, January 05, 2004 4:42 AM
> To: Mikhail Khlopotov <mik
> Cc: www-rdf-logic
> Subject: Re: "Transitive over" properties
> 
> 
> 
> 
> 
> [this is not a reply via webont-comments but rather via rdf-logic
> as this is not wg official but rather intended as a discussion]
> 
> 
> > I'm trying to use OWL in my research, in which I need a way 
> to represent
> > constraints on a semantic network, and while studying OWL 
> and analyzing
> > it's completeness, I found no direct way to express 
> "transitive over"
> > properties, I mean properties, which are not transitive by 
> themselves,
> > but are transitive over another property.
> > For example "worksFor" may be considered transitive over 
> "consistsOf",
> > if we have a company consisting of departments.
> >
> > Are there any ways in current OWL to express such a relations? I
> 
> Not that I know of...
> 
> > suppose, they're vital for part-whole relationship.
> >
> > Hope, this message is clear to understand ;-)
> 
> If I understand it right, then for instance,
> given following facts
> 
> :worksFor :transitiveOver :consistsOf.
> :aCompany :consistsOf :rAndD.
> :rAndD :consistsOf :gSw.
> :gSw :consistsOf :gSwBe.
> :mk :worksFor :gSwBe.
> 
> and also given following simple rule
> 
> {?P :transitiveOver ?Q. ?Z ?Q ?Y. ?X ?P ?Y} => {?X ?P ?Z}.
> 
> then it follows that (*)
> 
> :mk :worksFor :aCompany.
> :mk :worksFor :rAndD.
> :mk :worksFor :gSw.
> :mk :worksFor :gSwBe.
> 
> But indeed it requires sw rules I guess :)
> 
> 
> --
> Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/
> 
> (*) I've checked that with Cwm
> 
> #############
>     :aCompany     :consistsOf :rAndD .
> 
>     :gSw     :consistsOf :gSwBe .
> 
>     :mk     :worksFor :aCompany,
>                 :gSw,
>                 :gSwBe,
>                 :rAndD .
> 
>     :rAndD     :consistsOf :gSw .
> 
>     :worksFor     :transitiveOver :consistsOf .
> #############
> 
> and Euler
> 
> #############
>  {:worksFor :transitiveOver [iw:Variable "?Q"; = :consistsOf].
>   [iw:Variable "?Z"; = :aCompany] [iw:Variable "?Q"; = :consistsOf]
> [iw:Variable "?Y"; = :rAndD].
>    {:worksFor :transitiveOver [iw:Variable "?Q"; = :consistsOf].
>     [iw:Variable "?Z"; = :rAndD] [iw:Variable "?Q"; = :consistsOf]
> [iw:Variable "?Y"; = :gSw].
>      {:worksFor :transitiveOver [iw:Variable "?Q"; = :consistsOf].
>       [iw:Variable "?Z"; = :gSw] [iw:Variable "?Q"; = :consistsOf]
> [iw:Variable "?Y"; = :gSwBe].
>       [iw:Variable "?X"; = :mk] :worksFor [iw:Variable "?Y"; 
> = :gSwBe]} =>
>     {[iw:Variable "?X"; = :mk] :worksFor [iw:Variable "?Y"; = 
> :gSw]}} =>
>   {[iw:Variable "?X"; = :mk] :worksFor [iw:Variable "?Y"; = 
> :rAndD]}} =>
> {:mk :worksFor [iw:Variable "_:X_2"; = :aCompany]}.
> 
>  {:worksFor :transitiveOver [iw:Variable "?Q"; = :consistsOf].
>   [iw:Variable "?Z"; = :rAndD] [iw:Variable "?Q"; = :consistsOf]
> [iw:Variable "?Y"; = :gSw].
>    {:worksFor :transitiveOver [iw:Variable "?Q"; = :consistsOf].
>     [iw:Variable "?Z"; = :gSw] [iw:Variable "?Q"; = :consistsOf]
> [iw:Variable "?Y"; = :gSwBe].
>     [iw:Variable "?X"; = :mk] :worksFor [iw:Variable "?Y"; = 
> :gSwBe]} =>
>   {[iw:Variable "?X"; = :mk] :worksFor [iw:Variable "?Y"; = :gSw]}} =>
> {:mk :worksFor [iw:Variable "_:X_2"; = :rAndD]}.
> 
>  {:worksFor :transitiveOver [iw:Variable "?Q"; = :consistsOf].
>   [iw:Variable "?Z"; = :gSw] [iw:Variable "?Q"; = 
> :consistsOf] [iw:Variable
> "?Y"; = :gSwBe].
>   [iw:Variable "?X"; = :mk] :worksFor [iw:Variable "?Y"; = :gSwBe]} =>
> {:mk :worksFor [iw:Variable "_:X_2"; = :gSw]}.
> 
> :mk :worksFor [iw:Variable "_:X_2"; = :gSwBe].
> #############
> 
> 

Received on Sunday, 4 January 2004 23:40:39 UTC