- From: Minsu Jang <minsu@etri.re.kr>
- Date: Mon, 5 Jan 2004 13:40:31 +0900
- To: "'Jos De_Roo'" <jos.deroo@agfa.com>, "'Mikhail Khlopotov <mik'" <mik@chel.com.ru>
- Cc: "'www-rdf-logic'" <www-rdf-logic@w3.org>
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