Re: Language tags and valu etetsing

On Mon, Oct 23, 2006 at 05:39:16PM +0200, Eric Prud'hommeaux wrote:
> 
> On Mon, Oct 23, 2006 at 03:24:59PM +0100, Seaborne, Andy wrote:
> > ...
> > [[
> > The consequence of this rule is that extended SPARQL implementations will 
> > produce at least the same solutions as an unextended implementation, and 
> > may, for some queries, produce more solutions.
> > ]]
> > isn't true by the way - filters can be negated so more or less solutions 
> > are going to be possible with any kind of extensibility.
> 
> Exploring the results for a date comparison with or without negation,
> with or without support for xsd:date for this tests with only one of
> the FILTERs applied:
> 
> Data:
> <http://example.org/doc1> dc:date "2001-12-03T13:41"^^xsd:dateTime .
> <http://example.org/doc2> dc:date "2003-10-03"^^xsd:date .
> 
> Query:
> SELECT ?doc
>  WHERE { ?doc dc:date ?d
>          FILTER (?d > "2000-00-00T12:00"^^xsd:dateTime)    # t - TRUE
>          FILTER (!(?d < "2000-00-00T12:00"^^xsd:dateTime)) # tn - TRUE-negated
>          FILTER (?d < "2000-00-00T12:00"^^xsd:dateTime)    # f - FALSE
>          FILTER (!(?d > "2000-00-00T12:00"^^xsd:dateTime)) # fn - FALSE-negated
>        }
> 
> 	without xsd:date		with xsd:date support
> t	<http://example.org/doc1>	<http://example.org/doc1>
> 					<http://example.org/doc2>
> tn	<http://example.org/doc1>	<http://example.org/doc1>
> 					<http://example.org/doc2>
> f
> fn
> 
> That is, f and fn get no results.
> Can you come up with a case that meets our notion of monotinicity that
> violates this "produce at least the same solutions" assertion?

Per suggestion from AndyS on IRC, I tried !("foo"@en != "foo"@EN) with
and without lang support and still find it to be dawg:monotonic.
(AndyS, sorry it took so long to respnd -- suffered some mission creep.)

eric@unagi:~/sources/public/perl/modules/W3C/Rdf/bin$ ./algae --summary  --manifest /home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/manifest-lang-case-sensitivity.ttl

Note, I put this into a side manifest because we have not reached
consensus on how to designate particular extensions.


executing lang-case-sensitive-eq "'xyz'@en = 'xyz'@EN"
  reading <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity.ttl>
  executing query <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity-eq.rq>
  expect <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitive-eq.srx>
+-------------------+--------+-------------------+--------+
|                 x1|      v1|                 x2|      v2|
|-------------------|--------|-------------------|--------|
|<http://example/x2>|"xyz"@en|<http://example/x2>|"xyz"@en|
|<http://example/x3>|"xyz"@EN|<http://example/x3>|"xyz"@EN|
+-------------------+--------+-------------------+--------+

That is, "'xyz'@en was not found to be equal to 'xyz'@EN"


executing lang-case-insensitive-eq "'xyz'@en = 'xyz'@EN with mfx:LangCaseInsensitivity"
  require http://jena.hpl.hp.com/2005/05/test-manifest-extra#LangCaseInsensitivity
  reading <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity.ttl>
  executing query <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity-eq.rq>
  expect <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-insensitive-eq.srx>
+-------------------+--------+-------------------+--------+
|                 x1|      v1|                 x2|      v2|
|-------------------|--------|-------------------|--------|
|<http://example/x2>|"xyz"@en|<http://example/x2>|"xyz"@en|
|<http://example/x2>|"xyz"@en|<http://example/x3>|"xyz"@EN|
|<http://example/x3>|"xyz"@EN|<http://example/x2>|"xyz"@en|
|<http://example/x3>|"xyz"@EN|<http://example/x3>|"xyz"@EN|
+-------------------+--------+-------------------+--------+

With LangCaseInsensitivity, "'xyz'@en is equal to 'xyz'@EN"


executing lang-case-sensitive-ne "'xyz'@en != 'xyz'@EN"
  reading <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity.ttl>
  executing query <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity-ne.rq>
  expect <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitive-ne.srx>
+--+--+--+--+
|x1|v1|x2|v2|
|--|--|--|--|
+--+--+--+--+

Without LangCaseInsensitivity, "'xyz'@en is not != to 'xyz'@EN" (it
gets a type error instead.)


executing lang-case-insensitive-ne "'xyz'@en != 'xyz'@EN with mfx:LangCaseInsensitivity"
  require http://jena.hpl.hp.com/2005/05/test-manifest-extra#LangCaseInsensitivity
  reading <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity.ttl>
  executing query <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-sensitivity-ne.rq>
  expect <file://unagi/home/eric/WWW/2001/sw/DataAccess/tests/data/OpenWorld/lang-case-insensitive-ne.srx>
+--+--+--+--+
|x1|v1|x2|v2|
|--|--|--|--|
+--+--+--+--+

With LangCaseInsensitivity, "'xyz'@en is not != to 'xyz'@EN" beacuse
they are considered equal.


> > That's why "!=" should mean "not known to be unequal" and not "not(known to 
> > be equal)"
> 
> This is a separate issue, I believe. In XQuery, you are assumed to be
> doing something wrong if you compare anything outside the standard
> mapping, even to find out it is not equal. In SPARQL, we have to
> decide if we want that same functionality, or change RDFterm-equal [TEQ]
> [[
> Returns TRUE if term1 and term2 are the same RDF term as defined in
> Resource Description Framework (RDF): Concepts and Abstract Syntax
> [CONCEPTS]; produces a type error if the arguments are both literal
> but are not the same RDF term; returns FALSE otherwise. term1 and
> term2 are the same if any of the following is true:
> ]]
> to
> [[
> Returns TRUE if term1 and term2 are the same RDF term as defined in
> Resource Description Framework (RDF): Concepts and Abstract Syntax
> [CONCEPTS]; produces a type error if either of the arguments is a
> literal but is not a supported term; returns FALSE otherwise. term1
> and term2 are the same if any of the following is true: 
> ]]
> to add = and != tests for all the supported types.
> 
> [TEQ] http://www.w3.org/2001/sw/DataAccess/rq23/rq24#func-RDFterm-equal
-- 
-eric

home-office: +1.617.395.1213 (usually 900-2300 CET)
	    +33.1.45.35.62.14
cell:       +33.6.73.84.87.26

(eric@w3.org)
Feel free to forward this message to any list for any purpose other than
email address distribution.

Received on Saturday, 4 November 2006 21:33:56 UTC