ACTION: Eric+Andy to identify and collect mf:requires URIs and put in 

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


==== Which tests? What property values?

The only use of mf:requires is in the open-world test area.

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     | <> |
| manifest:date-2     | <> |
| manifest:date-2     | mf:xsd-date-eq-xsd-dateTime             |
| manifest:date-3     | <> |
| 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 

These tests are marked by property mf:requires and an object value from one of 
the URIs described below.

== <>

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"

** 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 

== 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 [] 
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