Komplexitätskatalog von SPARQL-Anfragen
Der folgende Anfragekatalog zeigt SPARQL-Beispielanfragen steigender Komplexität, beginnend
mit mit einer einfachen Anfrage. Die Komplexität wird hierbei durch den nötigen Transformationsaufwand
eine SPARQL-Anfrage in eine SQL-Anfrage gemessen. Weiterhin wird der Transformationsaufwand
nicht an einer Umwandlung einer SPARQL-Anfrage auf eine einzige Tabelle mit RDF-Informationen
(beispielsweise eine Tabelle mit den Spalten Subject, Predicate, Object) gemessen,
sondern auf mehrere Tabelle, die Informationen enthalten können.
Die hier aufgezeigten Beispiele nutzen standardmäßig jeweils den foaf- bzw. atom-Namensraum
(<http://xmlns.com/foaf/0.1/>, <http://www.w3.org/2005/Atom#>), welcher der Einfachheit halber
in einer Anfrage nicht per PREFIX-Definition festgelegt wird.
SPARQL-Anfragen werden mittels Graph Patterns ausgedrückt. Diese können aus einem Basic Graph
Pattern (Zusammenstellung eines Triple Patterns), Group Graph Pattern (Verknüpfung mehrere
Graph Patterns), Value Constraints (Werteinschränung), Optional Graph Pattern (optionale Graph
Patterns), Union Graph Pattern (Vereinigung von Graph Patterns) und RDF Dataset Graph Pattern
(Graph Patterns einzelner RDF-Datensätze) bestehen.
Der nachfolgende Katalog zeigt keinesweg die vollständige Nutzung sämtlicher in der SPARQL-Spezifikation
definierten Konstrukte, sondern soll lediglich Aufschluss über mögliche Komplexitätssteigerungen
geben.
1. Basic Graph Pattern
{ ?x foaf:name Christian Lehmann .}
2. dto.
{ ?x ?predicate value .}
3. dto.
{ ?s ?p ?o .}
4. dto.
{ ?x ?foaf:name Christian Lehmann .} ORDER BY ?x
bzw.
SELECT DISTINCT ?x WHERE
{ ?x ?foaf:name Christian Lehmann .} LIMIT 50
5. Group Graph Pattern
6. dto.
7. dto.
{?chris foaf:name Christian Lehmann. }
8. Group Graph Pattern + Value Contraints
{ ?x foaf:name ?name.
?x foaf:mail ?mail. }
9. Union Graph Pattern
10. Union Graph Pattern + Group Graph Pattern
{ {?x foaf:name ?name. ?x foaf:mail ?mail.}
{?x atom:author ?name. ?x atom:email ?mail.}
11. Optional Graph Pattern
12. Optional Graph Pattern + Value Constraint
{ ?x foaf:name ?name.
13. Optional Graph Pattern
{ ?x foaf:name ?name.
OPTIONAL {?x foaf:givenname ?gname
OPTIONAL {?x foaf:homepage ?hp.}
}
14. RDF Dataset Graph Pattern
{ }
15. dto.
16. dto.
SELECT ?name ?doc WHERE
{ GRAPH data:ChrisFoaf
GRAPH ?doc
Information
Last Modification:
2006-12-04 15:08:08 by Christian Lehmann