- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Tue, 17 Oct 2006 12:42:21 +0200
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
On Thu, Aug 24, 2006 at 09:45:33PM +0100, Seaborne, Andy wrote:
>
> """
> ACTION AndyS:
> Write some tests for value testing (unknown types and extensibility) to add
> to
> 2006/JulSep0086
> """
>
> http://lists.w3.org/Archives/Public/public-rdf-dawg/2006JulSep/0086
> http://lists.w3.org/Archives/Public/public-rdf-dawg/2006AprJun/0104
>
> I added some tests and sorted out the existing ones. They are split into
> sets
> so can be considered separately if desired.
>
> http://www.w3.org/2001/sw/DataAccess/tests/data/OpenWorld/
>
> Tests open-eq-01 to open-eq-06 are the original ones from 2006AprJun/0104,
> renamed.
I agree with these tests. These require no extension to SPARQL.
| "open-eq-01"|"passed"| "001"^^xsd:integer !≘ "01"^^xsd:integer
| "open-eq-02"|"passed"| "a"^^t:type1 ≘ "a"^^t:type1
| "open-eq-03"|"passed"| 1 = 1, "01"^^xsd:integer = 1
| "open-eq-04"|"passed"| 2 != 1, "02"^^xsd:integer != 1
| "open-eq-05"|"passed"| "a"^^t:type1 = "a"^^t:type1
| "open-eq-06"|"passed"| ∅ != "a"^^t:type1
I propose that the WG approve these tests.
> Tests open-eq-07 to open-eq-10 work by taking a list of all possible term
> forms, forming the cross product and seeing which are value-equal and
> value-not-equal. This is done for data which contains the same compared
> values and different by comparable values. These tests are exhaustive and
> include literals with lang tags - because lang tags are not case sensitive
> (nor is there a canonical form according to RFC3066) it seemed reasonable
> to be able equate "xyz"@EN with "xyz"@en. In effect, each lang tag defines
> a separate value space - can't compare or test for equality across them,
> but you can with the same language.
>
> "abc"@en = "abc"@EN
> "xyz"@en > "abc"@en
> "xyz"@en > "abc"@EN
There is no current language for case-insensitive language tags in
SPARQL presently. My implementation failed these both because of
case-sensitive language matching, and because they employed extra
operators not currently in SPARQL.
open-eq-07:
A = B xsd:string simple literal op:numeric-equal(fn:compare(STR(A), STR(B)), 0)
Mostly they lean on the (apparent) fact that in ARQ, all known types
can be compared to other known types, as one can do with
sameTerm. I'll persue this in a later mail.
> Tests open-eq-11.rq and open-eq-12.rq look for pairs of terms that can be
> compared and pairs that can't.
>
> Tests open-cmp-01, open-cmp-02 look for pairs that can be compared, not
> just test for equality. open-cmp-02 uses "<=" which can be implemented so
> that things can pass <= even if they are not comparable because they are
> unknown but pass equality test by sameTerm => sameValue.
>
> These test work on pairs of literals in the data - if open-eq-07/10 are too
> coarse grained, they could be broken up into this style. I just wrote the
> paired data later, but left the exhaustive approach of the earlier tests.
>
> (sameTerm seems a slightly better name than sameNode because "RDF term" is
> phrase used in SPARQL and because predicates aren't nodes in the
> graph-sense).
>
> No sameTerm tests yet because they can't be written yet in pure SPARQL.
>
> [[
> aside: I realised that testing for plain literals vs xsd:string can be done
> even if datatype("plain string") is xsd:string by a different route:
>
> sameTerm(?x, str(?x))
>
> and this is the defining characteristic of plain literals.
> ]]
>
> Tests date-1 to date-4 are some tests involving an extension type (xsd:date)
> including sorting.
Of these, I only passed date-4, which does not require any extension
to the SPARQL language as specified.
date-1:
passed: "2006-08-23"^^xsd:date = "2006-08-23"^^xsd:date
failed: "2006-08-23Z"^^xsd:date = "2006-08-23"^^xsd:date
failed: "2006-08-23+00:00"^^xsd:date = "2006-08-23"^^xsd:date
date-2:
failed: "2006-08-23"^^xsd:date != "2006-08-23"^^xsd:date
failed: "2006-08-23Z"^^xsd:date != "2006-08-23"^^xsd:date
failed: "2006-08-23+00:00"^^xsd:date != "2006-08-23"^^xsd:date
date-3:
failed: "2006-08-23"^^xsd:date > "2006-08-22"^^xsd:date
failed: "2006-08-23Z"^^xsd:date > "2006-08-22"^^xsd:date
failed: "2006-08-23+00:00"^^xsd:date > "2006-08-22"^^xsd:date
date-4:
passed: datatype("2006-08-23"^^xsd:date ) = xsd:date
passed: datatype("2006-08-24Z"^^xsd:date) = xsd:date
passed: datatype("2000-01-01"^^xsd:date ) = xsd:date
These tests bring up the issue of how we test extensions. I think all
we can do is test the bare language, writing tests that appear to
label an extended implementation as "failed".
--
-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 Tuesday, 17 October 2006 10:41:27 UTC