- From: Jos De_Roo <jos.deroo.jd@belgium.agfa.com>
- Date: Sat, 20 Apr 2002 01:30:36 +0200
- To: "Dan Connolly <connolly" <connolly@w3.org>
- Cc: "w3c-rdfcore-wg" <w3c-rdfcore-wg@w3.org>, "Lynn Andrea Stein <las" <las@olin.edu>
[...]
> RDF/xml has special syntax for containers, but experience
> trying to exploit it to come to intuitive conclusions
> has exposed problems. Take the class above... say
> Continent is the subject of that oneOf property.
> If we know
>
> ex:Bob daml:differentIndividualFrom ex:Eurasia.
> ex:Bob daml:differentIndividualFrom ex:Africa.
> ex:Bob daml:differentIndividualFrom ex:North_America.
> ex:Bob daml:differentIndividualFrom ex:South_America.
> ex:Bob daml:differentIndividualFrom ex:Australia.
> ex:Bob daml:differentIndividualFrom ex:Antarctica.
>
> ex:NotContinent daml:complementOf ex:Continent.
>
> then we should be able to conclude
>
> ex:Bob rdf:type ex:NotContinent.
>
> Now this works perfectly well* when the oneOf claim
> is spelled out long-hand using first/rest/nil.
>
> *[I should back this claim with running code,
> but in the interest of getting this and other
> stuff done today, I'm skipping that for now.
> I think Jos has the relevant code running.]
I keep this as a nice test case
and believe we can let this run
> But RDF/xml's collection syntax expands to these
> rdf:_1 rdf:_2 etc. triples, which don't say
> enough to come to the relevant conclusion
> without doing closed-world stuff.
that alligns with our thoughts/experience too
[...]
> On balance, I prefer parse-collection-STD right now.
> But I need to sleep on it or something to be sure.
> Other thoughts? Lynn? Jos? DaveB?
well, I prefer parse-collection-STD too
[[
* add parseType="collection" to RDF/xml;
* add rdf:first, rdf:rest, rdf:nil too.
* specify that parseType="collection"
is notation for first/rest/nil triples
ala daml:collection.
]]
having first/rest/nil triples is making it easiest
to build entailment rules such as
{ :rule10a } log:implies { ( ?x / ?b ) owl:item ?x } .
{ :rule10b . ?b owl:item ?x } log:implies { ( ?a / ?b ) owl:item ?x } .
{ :rule11a } log:implies { ( ( ) ?c ) :append ?c } .
{ :rule11b . ( ?a ?b ) :append ?c } log:implies { ( ( ?x / ?a ) ?b ) :append ( ?x / ?c ) } .
{ :rule12a } log:implies { ( ?a ( ?a / ?c ) ) :remove ?c } .
{ :rule12b . ( ?a ?b ) :remove ?c } log:implies { ( ?a ( ?x / ?b ) ) :remove ( ?x / ?c ) } .
{ :rule13a } log:implies { ( ) :sameBagAs ( ) } .
{ :rule13b . ( ?a ?c ) :remove ?x . ?b :sameBagAs ?x } log:implies { ( ?a / ?b ) :sameBagAs ?c } .
{ :rule14a } log:implies { ( ) :sameSeqAs ( ) } .
{ :rule14b . ?b :sameSeqAs ?c } log:implies { ( ?a / ?b ) :sameSeqAs ( ?a / ?c ) } .
where ( ?a / ?b ) is shorthand for _:list such that
_:list owl:first ?a .
_:list owl:rest ?b .
--
Jos
Received on Friday, 19 April 2002 19:32:49 UTC