Optional triples: single optional triple case.
# 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
dawg-tests/dawg-result-001.n3
| name | mbox |
|---|---|
| "Alice" | <mailto:alice@work> |
| "Eve" | NULL |
| "Bob" | <mailto:bob@work> |
| "Bob" | <mailto:bob@home> |
Optional triples: multiple triples in one optional clause. Must find a name for each person known.
# 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
dawg-tests/dawg-result-002.n3
| name | name2 |
|---|---|
| "Bob" | "Alice" |
| "Alice" | "Bob" |
| "Eve" | NULL |
Optional triples: multiple 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
dawg-tests/dawg-result-003.n3
| name | mbox |
|---|---|
| "Alice" | <mailto:alice@work> |
| "Bob" | <mailto:bob@work> |
| "Bob" | <mailto:bob@home> |
| NULL | <test:fred@edu> |
| "Eve" | NULL |