- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Sun, 16 Sep 2007 15:13:29 +0100
- To: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
ACTION: Eric+Andy to identify and collect mf:requires URIs and put in
documentation
I looked at the use of mf:requires. Belowis some draft text and some notes of
changes I think need doing.
Eric started this with
http://lists.w3.org/Archives/Public/public-rdf-dawg/2006OctDec/0113.html
Andy
==== Which tests? What property values?
The only use of mf:requires is in the open-world test area.
BASE <http://www.w3.org/2001/sw/DataAccess/tests/>
PREFIX mf: <test-manifest#>
PREFIX manifest: <data-r2/open-world/manifest#>
SELECT ?test ?requires
{
?test a mf:QueryEvaluationTest .
?test mf:requires ?requires
}
ORDER BY ?test
-----------------------------------------------------------------
| test | requires |
=================================================================
| manifest:date-1 | <http://www.w3.org/2001/XMLSchema#date> |
| manifest:date-2 | <http://www.w3.org/2001/XMLSchema#date> |
| manifest:date-2 | mf:xsd-date-eq-xsd-dateTime |
| manifest:date-3 | <http://www.w3.org/2001/XMLSchema#date> |
| manifest:open-eq-07 | mf:IllFormedLiteral |
| manifest:open-eq-07 | mf:LangCaseInsensitivity |
| manifest:open-eq-07 | mf:StringSimpleLiteralCmp |
| manifest:open-eq-08 | mf:IllFormedLiteral |
| manifest:open-eq-08 | mf:KnownTypesDefault2Neq |
| manifest:open-eq-08 | mf:LangCaseInsensitivity |
| manifest:open-eq-08 | mf:StringSimpleLiteralCmp |
| manifest:open-eq-09 | mf:IllFormedLiteral |
| manifest:open-eq-10 | mf:IllFormedLiteral |
| manifest:open-eq-10 | mf:KnownTypesDefault2Neq |
| manifest:open-eq-11 | mf:IllFormedLiteral |
| manifest:open-eq-11 | mf:KnownTypesDefault2Neq |
| manifest:open-eq-12 | mf:IllFormedLiteral |
| manifest:open-eq-12 | mf:KnownTypesDefault2Neq |
| manifest:open-eq-12 | mf:LangTagAwareness |
-----------------------------------------------------------------
==== Draft text
[[ Additional notes and needed changes marker ** ]]
** Eric - I'd appreciate you checking this.
** There was "LeGeIncludeEq" but this is not currently used.
A number of tests in the open-world directory illustrate features of SPARQL by
depending on how a SPARQL query processor can extend the set of core types and
operations as defined by the operator table
[http://www.w3.org/TR/rdf-sparql-query/#OperatorMapping].
These tests are marked by property mf:requires and an object value from one of
the URIs described below.
== <http://www.w3.org/2001/XMLSchema#date>
Requires the processor to understand comparisons of literal of type xsd:date.
Without understand the xsd;date datatype, a processor would raise an error
on the operations of "=" and "!=". With an understanding of xsd:date, a
processor can perform value-based operations and provide the operations
desibed in "XQuery 1.0 and XPath 2.0 Functions and Operators"
http://www.w3.org/TR/xpath-functions/#func-date-equal
http://www.w3.org/TR/xpath-functions/#func-date-less-than
http://www.w3.org/TR/xpath-functions/#func-dateTime-greater-than
** Bad modelling: needs a URI like XsdDateOperations . It refers to the
operations, not the type. All [processors handle xsd:date even if only as an
unknown datatype.
== mf:StringSimpleLiteralCmp
This indicates that the test uses the fact that plain literals, without
language tags test are the same value as an xsd;string with the same lexicial
form. This is covered by rules "xsd 1a" and "xsd 1b" from RDF Semantics
[http://www.w3.org/TR/rdf-mt/#DtypeRules].
== mf:KnownTypesDefault2Neq
This indicates that a processor can extend the SPARQL operator model by using
the fact that values of literals can be in disjoint value spaces and hence can
not be equal by value. For example, an xsd:integer can not be the same value
as an xsd:boolean because these two datatypes define disjoint value spaces.
== mf:IllFormedLiteral
This indicates that a processor must handle literals with a lexical form that
is not correct for the declared datatype.
** I don't see why this is a feature (implying some kind of extension) - he
tests don't use anything that isn't required of any SPARQL implementation.
== mf:LangCaseInsensitivity
This indicates that a processor handles language tags in a case insensitive
fashion (as required by RFC 3066).
** This is explicitly required by RDF Concepts - I don't understand why it is
picked out as a "requires" given more recent discussions in DAWG. I propose
we remove it; we should have arranged that the tests use the case
insensitivity only where necessary (i.e. only in "=", whichsi what this test
suite is about, and not in the results XML files).
** Would be subsumed by mf:LangTagAwareness anyway. Handling language tags
does mean case insensitivity.
== mf:LangTagAwareness
This indicates that the test assumes the SPARQL query processor has support
for plain literals with language tags. The minimum set of operators in the
SPARQL operator table [http://www.w3.org/TR/rdf-sparql-query/#OperatorMapping]
does not include language tag handling, only plain literals without language
tag (simple literals) and certain XSD datatypes.
** I don't understand why only open-eq-12 is marked with this.
open-eq-07 and open-eq-10 seems to require it as well.
== mf:xsd-date-eq-xsd-dateTime
** propose to remove this.
** date-2 Needs changing.
--
This is wrong: it isn't needed and it isn't true either! xsd:date and
xsd:dateTime are not comparable because a value from xsd:dateTime is a point
on the timeline and a value from xsd:date is a top-open interval on the timeline.
The test is FILTER ( ?v != "2006-08-23"^^xsd:date ). It's the fact that
dates and dateTimes define different value spaces that means that != is true.
i.e. a day is not a point in time. The same would be true for
"23"^^xsd;decimal in the data as well.
--
--
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England
Received on Sunday, 16 September 2007 14:13:57 UTC