- From: <jos.deroo@agfa.com>
- Date: Thu, 17 Feb 2005 16:08:34 +0100
- To: Rogier Brussee <rogier.brussee@gmail.com>
- Cc: Dan Brickley <danbri@w3.org>, Henry Story <henry.story@bblfish.net>, SWIG <semantic-web@w3.org>, semantic-web-request@w3.org, Yuzhong Qu <yzqu@seu.edu.cn>
is indeed better with :productProperty and owl:InverseFunctionalProperty have done test case data http://eulersharp.sourceforge.net/2004/04test/henry.n3 rules http://eulersharp.sourceforge.net/2004/04test/rogier.n3 query http://eulersharp.sourceforge.net/2004/04test/sameAsQ.n3 answer http://eulersharp.sourceforge.net/2004/04test/sameAsE.n3 it was tested with command line .euler --nope --think http://eulersharp.sourceforge.net/2004/04test/henry.n3 http://eulersharp.sourceforge.net/2004/04test/rogier.n3 --query http://eulersharp.sourceforge.net/2004/04test/sameAsQ.n3 and also via getting http://wopeg.he.agfa.be/.euler+--nope+--think+http%3A%2F%2Feulersharp.sourceforge.net%2F2004%2F04test%2Fhenry.n3+http%3A%2F%2Feulersharp.sourceforge.net%2F2004%2F04test%2Frogier.n3+--query+http%3A%2F%2Feulersharp.sourceforge.net%2F2004%2F04test%2FsameAsQ.n3 from primitive service java -Xmx800m -Dprocess.cwm="python /cwm-1.0.0/swap/cwm.py" -Dprocess.euler="java -Xmx800m euler.EulerRunner" -Dprocess.ttl=10000 R -p 80 -debug (version http://sourceforge.net/project/showfiles.php?group_id=77046&package_id=77935&release_id=305730 help http://eulersharp.sourceforge.net/2004/01swap/Euler.txt) -- Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/ Rogier Brussee <rogier.brussee@gmail.com> Sent by: semantic-web-request@w3.org 16/02/2005 16:13 Please respond to Rogier Brussee To: SWIG <semantic-web@w3.org> cc: Henry Story <henry.story@bblfish.net>, Jos De_Roo/AMDUS/MOR/Agfa-NV/BE/BAYER@AGFA, Dan Brickley <danbri@w3.org>, Yuzhong Qu <yzqu@seu.edu.cn> Subject: Re: Combined Inverse Functional Properties On Wed, 16 Feb 2005 11:22:57 +0800, Yuzhong Qu <yzqu@seu.edu.cn> wrote: > It seems to me that: > > what CIFP means is very close to that intersectionOf(r1, r2, ..., rn) is a reverse functional property. > [snip] Except that it is not so clear what the domain (i.e. "outcome") of :cifp is. > > > I did just a 5 min test with Cwm and Euler :) > > > > > > given data > > > > > > :a :r1 :b. > > > :a :r2 :c. > > > :g :r1 :b. > > > :g :r2 :c. > > > :p :cifp (:r1 :r2). > > It seems to me that the "combined inversefunctional property" is not a primitive notion. It seems more natural and general to have a notion of productProperty (or combined property) which can in particular be inverse functional. Thus I would replace the last sentence by : :p :productProperty (:r1:r2). :p a owl:InverseFunctionalProperty. :productProperty should model a list of simulaneous properties, and it seems easiest if it takes values in a list. To be of any use as an inverse functional property we have to assume that two lists are owl:sameAs if their entries are owl:sameAs and have the same order, just as Yuzhong Qu seems to suggest. We can define some rules capturing the notion of :productProperty. I have no rule engine around here but does something like this work ? :productProperty a owl:InverseFunctionalProperty; rdfs:domain rdf:Property. # bottom of recursion { ?p :productProperty ?L. ?L rdf:first ?q. ?L rdf:rest rdf:nil. } => { {?x ?q ?a} <=> {?x ?p ?A. ?A rdf:first ?a. ?A rdf:rest rdf:nil} } . #recursion { ?p :productProperty ?L. ?L rdf:first ?q. ?L rdf:rest ?M. ?r :productProperty ?M} => { {?x ?q ?a. ?x ?r ?B} <=> {?x ?p ?A. ?A rdf:first ?a. ?A rdf:rest ?B} }. # ?q :composition (?p rdf:first). ?r :composition (?p rdf:rest). Sigh > > > > > > and some rules capturing only cases for 1, 2 and 3 cifp properties > > > > > > {?C :cifp ?L. > > > ?L rdf:first ?P; > > > rdf:rest rdf:nil. > > > ?A ?P ?X. > > > ?B ?P ?X} > > > => > > > {?A owl:sameAs ?B}. > > > > > > {?C :cifp ?L. > > > ?L rdf:first ?P; > > > rdf:rest ?M. > > > ?M rdf:first ?Q; > > > rdf:rest rdf:nil. > > > ?A ?P ?X; > > > ?Q ?Y. > > > ?B ?P ?X; > > > ?Q ?Y} > > > => > > > {?A owl:sameAs ?B}. > > > > > > {?C :cifp ?L. > > > ?L rdf:first ?P; > > > rdf:rest ?M. > > > ?M rdf:first ?Q; > > > rdf:rest ?N. > > > ?N rdf:first ?R; > > > rdf:rest rdf:nil. > > > ?A ?P ?X; > > > ?Q ?Y; > > > ?R ?Z. > > > ?B ?P ?X; > > > ?Q ?Y; > > > ?R ?Z} > > > => > > > {?A owl:sameAs ?B}. > > > > > > > > > the N3QL query > > > > > > [] q:select {?X owl:sameAs ?Y}; q:where {?X owl:sameAs ?Y}. > > > > > > gave us > > > > > > :a owl:sameAs :a. > > > :a owl:sameAs :g. > > > :g owl:sameAs :a. > > > :g owl:sameAs :g. > > > So nice. > > > > > > > >
Received on Thursday, 17 February 2005 15:09:16 UTC