- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Fri, 03 Aug 2007 10:35:20 -0400
- To: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
EricP and I did some work on how we'll present an implementation report.
The basic idea is to define a relatively small and manageable number of
high-level SPARQL features. (Our CR exit criteria mandate two
interoperable implementations of each of these features.) Additionally,
we need to define what it means for an implementation to pass each of
these features.
Here's what Eric and I are suggesting for now:
+ Every test has N facets, for some N >= 0. (In practice, >= 5 or so.)
+ Every facet belongs to 1 feature. (Every feature has M facets, M >= 1.)
+ Every facet has one canonical test. This is basically a test that
tests as little as possible beyond that facet. (Right now, the canonical
tests are determined automatically by Eric's facets-test.pl. We're going
to eyeball this to make sure it seems reasonable.)
+ When we examine an implementation's EARL results, every failing test
can count against 1 or more facets:
+ Failing test T that has facets f1, f2, ..., fN will count against
facet fi if the implementation failed the canonical test for fi. (This
rule tries to explain the cause of the failure and avoid blaming other
parts. If I fail SELECT * { A OPTIONAL B } but pass the canonical test
for select-*, failing this test shouldn't count against the select-* facet.)
+ Every failing test must count against at least one facet - if the
above rule doesn't find an explanation, then manual intervention
examines the case and picks a most-likely-responsible facet (or, if
appropriate, creates a new facet) to count against.
+ The test counts as a failure against each feature that contains a
facet that the test counts against.
So at that point, we can look at EARL results and come up with a split
on (explicitly) passed/failed tests for each feature.
We'll also provide the detailed breakdown by test and by facet of
implementation results.
For now, I've identified the following high-level features:
:CoreSPARQL a test:DAWGfeature ;
rdfs:comment "Core bits of SPARQL. Prefixed names, variables, blank
nodes, graph terms" .
:BasicGraphPatterns a test:DAWGfeature ;
rdfs:comment "Basic graph pattern matching. Triple pattern
constructs. Blank node scoping" .
:Optionals a test:DAWGfeature ;
rdfs:comment "OPTIONAL pattern matching" .
:Unions a test:DAWGfeature ;
rdfs:comment "UNION pattern matching" .
:Filters a test:DAWGfeature ;
rdfs:comment "FILTER clauses and expressions" .
:Datasets a test:DAWGfeature ;
rdfs:comment "RDF datasets. Default and named graphs. GRAPH keyword" .
:SolutionSequence a test:DAWGfeature ;
rdfs:comment "Sorting (ORDER BY) and slicing (LIMIT, OFFSET)" .
:SelectQueries a test:DAWGfeature ;
rdfs:comment "SELECT query form" .
:ConstructQueries a test:DAWGfeature ;
rdfs:comment "CONSTRUCT query form" .
:AskQueries a test:DAWGfeature ;
rdfs:comment "ASK query form" .
It's unclear to me whether "syntax", "type promotion", "i18n" should be
their own features, or whether anything else should be. I think this is
a decent list to start, and I've gone ahead and updated facets.ttl to
put each facet in the proper feature.
In annotating the facets, I noticed that we don't seem to have any
facets that capture the following types of tests (we do _have_ tests for
these, but I think right now they won't look special in the results):
- internationalization
- type promotion
- blank node label scoping
- FILTER scoping
We can leave those alone and see if a pattern emerges in the
implementation results, or we can try to identify facets for them (XPath
-based if possible, and otherwise manual/other - EricP?)
thoughts?
Lee
Received on Friday, 3 August 2007 14:35:30 UTC