Paul Gearon wrote:
Thanks Andy, this does clear up a number of things for me.
On Tue, Jul 29, 2008 at 11:33 AM, Seaborne, Andy <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
<snip/>
Most of the SPARQL filters require value space comparison. The
definition of "=" allows extensibility by causing a type error if
two terms might be the same value but the processor does not know.
(Aside two literals are definitely equal if they are the same
lexical form and same datatype, for any datatype whether anything
else if know to the processor about it, because the lexical to value
space mapping of the datatype is functional.)
This reminds me... exactly what is meant by "type error" here? The first
time I worked on this I threw an exception, but obviously that wasn't a
good idea and I fixed it. :-) At the moment, a "type error" is
effectively the same as not equals, which works, but has me
uncomfortable since I'm ignoring the distinction. (Actually, I'm still
using the exception internally, but I catch it and continue as if there
was no match)
(This was an area of teh spec that EricP did)
SPARQL defines a 3-state logic for evaluation. True, False and Error.
Errors propagate so for almost everything "something(error)" is error.
The exceptions are && and || so e.g. "true || error" is true and
"error&&false" is false and not(false&&error) is true.
Eric put the truth table in sec 11.2
http://www.w3.org/TR/rdf-sparql-query/#evaluation
At the top-most level, FILTER (..error..) excludes the solution tested
so error becomes false if you like as the 3-state logic collapses to a
2-state logic.
sameTerm works on the definition of equality from RDF Concepts so no
D-entailment. [B] But SPARQL does not prescribe what is "in" the
store - there is dataset that is queried. Especially in the case
where the dataset comes from execution context (no FROM etc, no
protocol parameter), SPARQL says nothing about how that dataset came
to be. It just is. So if you load RDF that has "+1"^^xsd:int,
whether the store preserves the exact lexical form, or it's
datatype, is a feature of the store. SPARQL does not cover this
step. If you load "+1"^^xsd:integer and "01"^^xsd:byte, it's a
store decision whether there are two terms or one, or whether what
is stored and returned is "1"^^xsd:integer which wasn't directly
mentioned (or even "1"^^xsd:decimal as the primitive XSD type that
they are all derived from).
This was my understanding of how things work, though this implementation
decision for Mulgara was made by others. I'm glad to see that the
decision wasn't based on a misunderstanding. However, it *is* causing
problems for the test suite.... as you get to below.
<snip/>
The test suite is a slightly different case: it is providing tests
for a specific set of choices. The tests do label what the
assumptions are. Some tests are labelled as making more than just
basic assumptions (e.g language tags).
This is where we are coming unstuck. The tests are being treated as an
absolute, meaning that if we don't get exact correspondence in the
results we fail. Even if Mulgara is prepared to accept this, many
potential users are not. In our current scenario, Sesame is expecting
exact compliance with the tests as they are, and our current
architecture (storing values for known types, rather than lexical
representations) does not work here.
When the data is loaded from the manifest with qt:data etc, the file is
assumed to be used as is. Just basic simple entailment level - you have
to start somewhere. Tests are supposed to be annotated with mf:requires
where they make assumptions. Since adding triples is monotoinic :-)
presumably anyone can add more to the test suite manifests at any time!
Seriously though - if theyare not labelled appropriately, could you at
least email the dawg-comments list with a list of the tests in question
and maybe something can be done (errata?). At least if its on the
mailing list then its somewhere other implementers can see it and any
future WG can pick it up.
Andy
I guess our problem comes down to the test suite being treated as a de
facto part of the standard.
Paul
--
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England