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 14:43:12 UTC