- 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