- From: Jeremy Carroll <jjc@hpl.hp.com>
- Date: Thu, 12 Apr 2007 15:30:38 +0100
- To: GRDDL Working Group <public-grddl-wg@w3.org>
- Message-ID: <461E428E.4080205@hpl.hp.com>
I had an action to write some SPARQL, it's attached, and so is the fixed up version of the EARL that Chime sent recently. It applies the following heuristic: If two tests have the same input document, and one passes and the other fails, then the failing test was not applicable. It deletes such ?s earl:validity earl:fail triples, and replaces them with ?s earl:validity earl:notApplicable ones It also adds the t:inputDocument triples used to make such analysis. This is a little unsatisfactory because I am changing someone else earl:Assertion's, rather than making new ones. I have an alternative query that actually makes new assertions, also attached, but it doesn't work :( Jeremy -- Hewlett-Packard Limited registered Office: Cain Road, Bracknell, Berks RG12 1HN Registered No: 690597 England
PREFIX earl: <http://www.w3.org/ns/earl#>
PREFIX gtd: <http://www.w3.org/2001/sw/grddl-wg/td/>
PREFIX t: <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
CONSTRUCT {
# inputDocument triples
?test t:inputDocument ?input .
# copy everything except failures.
?s ?p ?o .
# real failures
?sf earl:validity earl:fail .
# new notApplicable's
?s1 earl:validity earl:notApplicable .
?a1
earl:mode earl:heuristic .
}
#FROM <http://lists.w3.org/Archives/Public/public-grddl-wg/2007Apr/att-0029/GRDDLpy-earl-2007-04-09.rdf>
#FROM NAMED gtd:grddl-tests
WHERE {
# The order of the OPTIONALs below is logically irrelevant.
# This order works with the SPARQL engine I am using (ARQ from SVN).
# real failures:
# Distinguished by lack of a test with the same input
# that has passed.
OPTIONAL
{ ?sf earl:validity earl:fail .
?af earl:result ?sf .
?af earl:test ?tf .
GRAPH gtd:grddl-tests {
?tf t:inputDocument ?inf .
}
OPTIONAL
{
GRAPH gtd:grddl-tests {
?t2f t:inputDocument ?inf .
}
?a2f earl:test ?t2f .
?a2f earl:result ?s2f .
?s2f earl:validity earl:pass .
}
FILTER ( ! bound(?s2f) )
}
# New notApplicables
# Distinguished by being a failing test, but where there is
# a passing test with the same input.
OPTIONAL
{ ?s1 earl:validity earl:fail .
?a1 earl:result ?s1 .
?a1 earl:test ?t1 .
?a1 earl:subject ?subject .
GRAPH gtd:grddl-tests {
?t1 t:inputDocument ?in .
?t2 t:inputDocument ?in .
}
?pass earl:test ?t2 .
?pass earl:result ?s2 .
?s2 earl:validity earl:pass .
?pass earl:subject ?subject .
?pass earl:assertedBy ?assertor .
}
# inputDocument triples
OPTIONAL {
GRAPH gtd:grddl-tests {
?test t:inputDocument ?input .
}
}
# copy everything except failures.
OPTIONAL
{?s ?p ?o .
FILTER ( ! (?p = earl:validity && ?o = earl:fail ) ) }
}
PREFIX earl: <http://www.w3.org/ns/earl#>
PREFIX gtd: <http://www.w3.org/2001/sw/grddl-wg/td/>
PREFIX t: <http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
CONSTRUCT {
# inputDocument triples
?testx t:inputDocument ?input .
# copy everything except failures.
?s ?p ?o .
# real failures
?sf earl:validity earl:fail .
# new notApplicable's
[] rdf:type earl:Assertion ;
earl:result [
rdf:type earl:TestResult ;
rdfs:seeAlso ?pass ;
earl:validity earl:notApplicable
] ;
earl:mode earl:heuristic ;
earl:subject ?subject ;
earl:test ?test ;
earl:assertedBy [
rdf:type earl:CompoundAssertor ;
earl:mainAssertor ?assertor ;
earl:helpAssertor <>
].
<> rdf:type earl:Software .
<> dc:title "SPARQL to Patch-up EARL for GRDDL" .
<> dc:creator "Jeremy J. Carroll" .
}
FROM <http://lists.w3.org/Archives/Public/public-grddl-wg/2007Apr/att-0029/GRDDLpy-earl-2007-04-09.rdf>
FROM NAMED gtd:grddl-tests
WHERE {
# real failures:
# Distinguished by lack of a test with the same input
# that has passed.
OPTIONAL
{ ?sf earl:validity earl:fail .
?af earl:result ?sf .
?af earl:test ?tf .
GRAPH gtd:grddl-tests {
?tf t:inputDocument ?inf .
}
OPTIONAL
{
GRAPH gtd:grddl-tests {
?t2f t:inputDocument ?inf .
}
?a2f earl:test ?t2f .
?a2f earl:result ?s2f .
?s2f earl:validity earl:pass .
}
FILTER ( ! bound(?s2f) )
}
# New notApplicables
# Distinguished by being a failing test, but where there is
# a passing test with the same input.
OPTIONAL
{ ?s1 earl:validity earl:fail .
?a1 earl:result ?s1 .
?a1 earl:test ?test .
?a1 earl:subject ?subject .
GRAPH gtd:grddl-tests {
?t1 t:inputDocument ?in .
?t2 t:inputDocument ?in .
}
?pass earl:test ?t2 .
?pass earl:result ?s2 .
?s2 earl:validity earl:pass .
?pass earl:subject ?subject .
?pass earl:assertedBy ?assertor .
}
# inputDocument triples
OPTIONAL {
GRAPH gtd:grddl-tests {
?testx t:inputDocument ?input .
}
}
# copy everything except failures.
OPTIONAL
{?s ?p ?o .
FILTER ( ! (?p = earl:validity && ?o = earl:fail ) ) }
}
Attachments
- application/rdf+xml attachment: earl2-x.rdf
Received on Thursday, 12 April 2007 14:31:04 UTC