W3C home > Mailing lists > Public > w3c-rdfcore-wg@w3.org > October 2002

Re: Worry about RDF list semantics

From: Jos De_Roo <jos.deroo.jd@belgium.agfa.com>
Date: Fri, 11 Oct 2002 10:27:05 +0200
To: "Jeremy Carroll <jjc" <jjc@hplb.hpl.hp.com>
Cc: RDF core WG <w3c-rdfcore-wg@w3.org>, "Graham Klyne" <GK@NineByNine.org>
Message-ID: <OFC3652BB0.3068E829-ONC1256C4F.00294CD3-C1256C4F.002E6D41@agfa.be>


> I am worried about Pat's proposals for *any* RDF list semantics.
>
> I had believed that we were going to provide a list syntax, and leave
> the semantics to WebOnt.
>
> Pat's current proposal appears to have three unfortunate features:
>
> EQUALITY
> ========
>
> _:l rdf:first <a> .
> _:l rdf:first <b> .
> <a> <foo> <val> .
>
> entails
>
> <b> <foo> <val> .

in our tests this is not entailed i.e. we get
# No proof found


> INFINITY
> ========
>
> RDF closures of the empty rdf graph are infinite.

also not in our case, having some closure rules like

IF                           | THEN
-------------------------------------------------------
?s rdf:first ?x .            | ?s owl:item ?x .
-------------------------------------------------------
?s rdf:rest ?b .             |
?b owl:item ?x .             | ?s owl:item ?x .
-------------------------------------------------------
                             | ?x :includes rdf:nil .
-------------------------------------------------------
?s rdf:first ?a .            |
?x owl:item ?a .             |
?s rdf:rest ?b .             |
?x :includes ?b .            | ?x :includes ?s .
-------------------------------------------------------
                             | ?x :inAllOf rdf:nil .
-------------------------------------------------------
?s rdf:first ?a .            |
?x rdf:type ?a .             |
?s rdf:rest ?b .             |
?x :inAllOf ?b .             | ?x :inAllOf ?s .
-------------------------------------------------------
?s rdf:first ?a .            |
?x rdf:type ?a .             | ?x :inSomeOf ?s .
-------------------------------------------------------
?s rdf:rest ?b .             |
?x :inSomeOf ?b .            | ?x :inSomeOf ?s .
-------------------------------------------------------
                             | rdf:nil owl:notItem ?x .
-------------------------------------------------------
?s rdf:first ?a .            |
?a owl:differentFrom ?x .    |
?s rdf:rest ?b .             |
?b owl:notItem ?x .          | ?s owl:notItem ?x .


> CONTRADICTION
> =============
>
> The following rdf graph has no interpretations:
>
> rdf:nil rdf:first <foo> .

should it?


> (I note that we will have datatype errors in RDF graphs soon, but that
> feels to me like a significantly more limited style of 'contradiction').

we have some builtins so that nothing is needed to entail

( "a" "b" "c") str:concatenation "abc".
( "a" "b" "c") str:concatenation "abc".
"xyz" str:greaterThan "abc".
"abc" str:notGreaterThan "xyz".
"abc" str:lessThan "xyz".
"xyz" str:notLessThan "abc".
"xyz" str:notLessThan "xyz".
"abc" str:startsWith "ab".
"abc" str:endsWith "bc".
"abc" str:endsWith "abc".
( "1" "2" "3") math:sum "6.0".
( "6.0" "1") math:difference "5.0".
( "1" "2" "3") math:product "6.0".
( "6.0" "3") math:quotient "2.0".
( "5.0" "2.0") math:remainder "1.0".
"-5" math:negation "5.0".
( "2" "10") math:exponentiation "1024.0".
( "a" ( "b" "c") "d") math:memberCount "3".
"6.0" math:greaterThan "2.0".
"2.0" math:notGreaterThan "6.0".
"2.0" math:lessThan "6.0".
"6.0" math:notLessThan "2.0".
"6.0" math:equalTo "6.0".
"2.0" math:notEqualTo "6.0".

the () are used here as a shorthand for RDF lists
in the sense that (<a> <b>) is actually
_:l1 a rdf:List . _:l1 rdf:first <a> . _:l1 rdf:rest _:l2 .
_:l2 a rdf:List . _:l2 rdf:first <b> . _:l2 rdf:rest rdf:nil .
I agree that we easily can get e.g.
java.lang.NumberFormatException: jc
for ( "jc" "2" "3" ) math:sum  _:y .
I also don't see for the moment how rdf:format
can help here, as we have _:l1 rdf:first "jc"
and it would be hard to say rdf:first rdfs:format xsd:double .
but the B proposal of course also works as the A proposal
(w.r.t. to C, having a mixture of "1" xsd:float"1" xsd:decimal"1"
xsd:double"1" xsd:integer"1" xsd:nonNegativeInteger"1"
xsd:positiveInteger"1" etc. seems a bit less k.i.s.s. to me
but it can work of course)


> On the basis of these three features, which are more characteristic of
> OWL than RDF I suggest we ask WebOnt to handle List semantics.

OK

-- ,
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/
Received on Friday, 11 October 2002 04:28:47 EDT

This archive was generated by hypermail pre-2.1.9 : Wednesday, 3 September 2003 09:52:24 EDT