- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Wed, 7 Jul 2004 15:03:03 +0100
- To: public-rdf-dawg@w3.org
Snapshot of some tests of optional triples cases.
Browsable copy:
http://jena.hpl.hp.com/~afs/DAWG/Tests/
Manifest file:
http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-tests.n3
Zipped checkpoint including everything:
http://jena.hpl.hp.com/~afs/DAWG/dawg-tests-2004-07-07.zip
Everything =>
manifest, data, queries, results
The result sets are encoded into RDF serialized in N3
Unset variables are absent from the particualr solution
Comments, suggestions for new tests, requests for things to make it
easier to get a quick overview etc., please.
Andy
Explanation of each test:
---------------------------------------------------------
Test: dawg-test-001
Data: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-data-01.n3
Query: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-query-001
Result: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-result-001.n3
Example of a single triple optional clause.
This is Simon's example, foaf'ified as the other tests use
this same data file.
Query:
# Get name, and optionally the mbox, of each person
SELECT ?name ?mbox
WHERE
(?person foaf:name ?name)
OPTIONAL
(?person foaf:mbox ?mbox)
USING foaf FOR <http://xmlns.com/foaf/0.1/>
Output:
---------------------------------
| name | mbox |
=================================
| "Bob" | <mailto:bob@work> |
| "Bob" | <mailto:bob@home> |
| "Eve" | <<unset>> |
| "Alice" | <mailto:alice@work> |
---------------------------------
---------------------------------------------------------
Test: dawg-test-002
Data: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-data-01.n3
Query: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-query-002
Result: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-result-002.n3
Example of multi-triple graph pattern in optional part.
Query:
# Get names of people, together with the names of people they know.
SELECT ?name, ?name2
WHERE
(?person foaf:name ?name)
OPTIONAL
(?person foaf:knowns ?p2)
(?p2 foaf:name ?name2)
USING foaf FOR <http://xmlns.com/foaf/0.1/>
Output:
-----------------------
| name | name2 |
=======================
| "Bob" | "Alice" |
| "Alice" | "Bob" |
| "Eve" | <<unset>> |
-----------------------
because Eve does not know anybody with a name (she knows Fred).
Note:
This leads to a need for nested optionals: get the name or mbox of
any people known by people in the FOAF datafile.
---------------------------------------------------------
Test: dawg-test-003
Data: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-data-01.n3
Query: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-query-003
Result: http://jena.hpl.hp.com/~afs/DAWG/Tests/dawg-result-003.n3
Example of multiple, independent optional clauses.
# Get names and mboxes, each of which may be optional.
SELECT ?name, ?mbox
WHERE
(?person rdf:type foaf:Person)
OPTIONAL
(?person foaf:name ?name)
OPTIONAL
(?person foaf:mbox ?mbox)
USING foaf FOR <http://xmlns.com/foaf/0.1/>
# rdf: is built in because its easier that way
-----------------------------------
| name | mbox |
===================================
| "Bob" | <mailto:bob@home> |
| "Bob" | <mailto:bob@work> |
| <<unset>> | <fred@edu> |
| "Eve" | <<unset>> |
| "Alice" | <mailto:alice@work> |
-----------------------------------
Received on Wednesday, 7 July 2004 10:03:35 UTC