Oxana Krieger Yuliya Grinshteyn RDF Query Languages Oxana Krieger Yuliya Grinshteyn Oxana Krieger Yuliya Grinshteyn
Gliederung Übersicht SQL/OQL- basierte Sprachen RQL RDQL: praktische Anwendung von Anfragen SeRQL Regelbasierte Sprachen Triple Versa N3 Vergleich von Anfragesprachen Oxana Krieger Yuliya Grinshteyn
SQL/OQL- basierte Anfragesprachen RDF Query Language (RQL) The First Declarative Language for uniformly querying RDF schemas and resource descriptions (Forth Institute of Computer Science) Eigenschaften: RQL basiert auf den Graphenmodell von RDF : bietet Eigenschaften für die Navigation auf dem Graph und Auswahl bestimmten Kanten und Knoten für weitere Abfragen. RQL folgt einer SQL / OQL-artigen Syntax : select-from-where Anfragen Oxana Krieger Yuliya Grinshteyn
RQL Sprachenübersicht Supports von RQL XML Schema Datentypen Filterung von wörtlichen Werten RDF Schema : insbesondere die durch (subClassOf, subPropertyOf) definierten Relationen von Klassen und Properties Quantification iterators EXISTS, FORALL Aggregatfunktionen (count …) Extrahieren der Statistik Namespace Abkürzungsmechanismus Bsp :using namespace vCard = <http://www.w3.org/2001/vcard-rdf/3.0#> Oxana Krieger Yuliya Grinshteyn
RQL Sprachenübersicht Variablen Variablen werden per Namen identifiziert Namen der Variablen : Var1, var_1 Variablen von Prädikaten fangen mit dem Präfix @ an Beispiel: @p Variable von schema classes fangen mit dem Präfix $ an Beispiel: $s Operatoren Logische Operatoren: AND, OR, NOT Vergleichsoperatoren: <, <=,= , >= , >, != Oxana Krieger Yuliya Grinshteyn
RQL Sprachenübersicht Path expressions (Pfad-Ausdrücke) werden in der „from“-Klausel verwendet RQL: from {X} @P {Y} Knoten und Kanten können Variable, URIs du Literalen sein RQL: {PAINTER} cult:paints {PAINTING} Ein Knoten kann leer sein, wenn sein Wert unwichtig ist RQL: {PAINTER} cult:paints . cult:technique {TECH} Pfad-Ausdrücke können aus mehreren Trippeln bestehen: {Person} foo:worksFor {Company}. rdf:type{foo:ITCompany} foo:worksFor rdf:type Company foo:ITCompany Person Oxana Krieger Yuliya Grinshteyn
RQL Sprachenübersicht SELECT – FROM – WHERE Query SELECT gibt an, welche Anfragevariablen in welcher Ordnung im Anfrageergebnis ausgegeben werden sollen „*“ werden alle Variablen ausgegeben, Ordnung kann nicht bestimmt werden FROM enthält Pfad-Ausdrücke, definiert Pfade im RDF-Graphen WHERE ist optional, kann zusätzlich boolesche Einschränkungen auf den Werten in den Pfad-Ausdrücken (from) enthalten Beispiel select X, @P // X - Subjekt from {X} @P {Y} // @P - Prädikat where Y like "Pablo" // Y - Objekt Oxana Krieger Yuliya Grinshteyn
RDQL Sprachenübersicht RDF Data Query Language (RDQL) has been implemented in a number of RDF systems for extracting information from RDF graphs (W3C) Eigenschaften: definiert einen Mustergraphen , der mit dem RDF-Graphen verglichen wird und eine Menge von übereinstimmenden Teilgraphen zurückliefert. SQL / OQL-artigen Syntax : select-from-where Anfragen Status W3C Submission Entwicklung von HP Oxana Krieger Yuliya Grinshteyn
RDQL Sprachenübersicht Supports Namespace Abkürzungsmechanismus model-level access mechanism Namespaces Syntax: “ using … for“ Klausel am Ende der Query Bsp.: USING info FOR <http://somewhere/peopleInfo#> Variablen Variablen werden per Namen identifiziert Namen der Variablen fangen mit dem Präfix „?“ an Bsp.: ?resource, ?fName URIs URIs werden in „<> “ quotiert Beispiel: WHERE (?x, <http://www.w3.org/2001/vcard-rdf/3.0#FN>, ?fName) Oxana Krieger Yuliya Grinshteyn
RDQL Sprachenübersicht Muster Graph werden in der „where“-Klausel verwendet WHERE (?y, <http://www.w3.org/2001/vcard- rdf/3.0#Family>, "Smith") Pfade (?Person, <foo:worksFor> ,?Company), (?Company, <rdf:type>, foo:ITCompany) Knoten und Kanten können Variable, URIs du Literalen sein Bespiel: (?PAINTER, cult:paints ,?PAINTING) ?Person ?Company foo:works For rdf:type foo:ITCompany Oxana Krieger Yuliya Grinshteyn
RDQL Sprachenübersicht SELECT – FROM – WHERE Query SELECT gibt an, welche Anfragevariablen im Anfrageergebnis ausgegeben werden sollen. FROM spezifiziert die zu untersuchenden Modelle anhand von URIs (kaum benutzt) WHERE wird gefolgt von einer Liste konjunktiv verbundener Triple-Muster. Diese Muster werden mit allen Trippeln, die im Modell enthalten sind, verglichen und übereinstimmende Tripel in einer Ergebnismenge gesammelt. AND gibt Bedingungen für den Gütigkeitsbereich von Variablen an. USING ermöglicht zur Verbesserung der Übersichtlichkeit der Anfrage die Einführung von Platzhaltern.. Beispiel: SELECT ?resource WHERE (?resource, <info:age>, ?age) AND ?age >= 24 USING info FOR <http://somewhere/peopleInfo#> Oxana Krieger Yuliya Grinshteyn
Praktische Anwendung RDQL Anfragen SELECT ?x, ?fname WHERE (?x, <http://www.w3.org/2001/vcard-rdf/3.0#FN>, ?fname) SELECT ?givenName WHERE (?y, <http://www.w3.org/2001/vcard-rdf/3.0#Family>, "Smith"), (?y, <http://www.w3.org/2001/vcard-rdf/3.0#Given>, ?givenName) (alternativ zu 1). SELECT ?x WHERE (?x, <vCard:FN>, "John Smith") USING vCard FOR <http://www.w3.org/2001/vcard-rdf/3.0#> ?x ?fname http://www.w3.org/2001/vcard-rdf/3.0#FN ?y Smith ?givenName http://www.w3.org/2001/vcard-rdf/3.0#Family http://www.w3.org/2001/vcard-rdf/3.0#Given Oxana Krieger Yuliya Grinshteyn
Praktische Anwendung RDQL Anfragen SELECT ?resource, ?givenName WHERE (?resource, <http://www.w3.org/2001/vcard-rdf/3.0#N>, ?z) , (?z, <http://www.w3.org/2001/vcard-rdf/3.0#Given>, ?givenName) SELECT ?resource WHERE (?resource, <info:age>, ?age) AND ?age >= 24 USING info FOR <http://somewhere/peopleInfo#> ?resource ?z ?givenName http://www.w3.org/ 2001/vcard-rdf/3.0#N http://www.w3.org/2001/ vcard-rdf/3.0#Given ?resource ?age info:age Oxana Krieger Yuliya Grinshteyn
Praktische Anwendung RDQL Anfragen SELECT ?resource, ?familyName WHERE (?resource, <info:age>, ?age) , (?resource, <vCard:N>, ?y) , (?y, <vCard:Family>, ?familyName) AND ?age >= 24 USING info FOR <http://somewhere/peopleInfo#> , vCard FOR <http://www.w3.org/2001/vcard-rdf/3.0#> ?resource ?age ?y info:age v:Card:N ?familyName vCard: Family Oxana Krieger Yuliya Grinshteyn
Sesame RDF Query Language (SeRQL) A new RDF/RDFS query language that is currently being developed by Aduna as part of Sesame (SeRQL munuel) Eigenschaften: vereinigt beste Eigenschaften der anderen Anfragen-Sprachen ( RQL, RDQL, N-Triples, N3 ) und fügt ihre eigene hinzu Graph Transformation. Ausdrucksvolle Pfad-Ausdruck-Syntax. Optional Pfad Matching. Folgt einer SQL / OQL-artigen Syntax: select-from-where Anfragen Supports: RDF Schema Support. XML Schema Datentyp Support Oxana Krieger Yuliya Grinshteyn
SeRQL Sprachenübersicht Literalen Bestehen aus 3 Teilen : Label, language tag ,Datentyp Beispiele: "foo" "foo"@en "<foo/>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> Variablen Variablen werden mit Namen identifiziert Zeichen „_“, „.“, „-“ sind erlaubt Beispiel für Namen der Variablen: Var1, _var2 unwise.var-name_isnt-it URI URIs werden in „<> “ quotiert <http://www.openrdf.org/index.html> Oxana Krieger Yuliya Grinshteyn
SeRQL Sprachenübersicht Path expressions (Pfad-Ausdrücke) Knoten und Kanten können Variable, URIs du Literalen sein Bespiel: {PAINTER} cult:paints {PAINTING} Grundlegende Pfad-Ausdrücke: SeRQL: {Person} foo:worksFor {Company} rdf:type {foo:ITCompany} oder {Person} foo:worksFor {Company}, {Company} rdf:type {foo:ITCompany} Oxana Krieger Yuliya Grinshteyn
SeRQL: Pfad-Ausdrücke Multi-value Knoten Variante: {subj1} pred1 {obj1, obj2, obj3} oder {subj1} pred1 {obj1}, {subj1} pred1 {obj2}, {subj1} pred1 {obj3} {subj1, subj2, subj3} pred1 {obj1} {first} pred1 {middle1, middle2} pred2 {last} Oxana Krieger Yuliya Grinshteyn
SeRQL: Sprachenübersicht Path expressions (Pfad-Ausdrücke) Zweige {subj1} pred1 {obj1}; pred2 {obj2} oder {subj1} pred1 {obj1}, {subj1} pred2 {obj2} optionale Pfad Ausdrücke: {Person} person:name {Name}; person:age {Age}; [person:email {EmailAddress}] Oxana Krieger Yuliya Grinshteyn
SeRQL Sprachenübersicht Query SELECT Query gibt Menge der Anfragevariablen in vorgegebener Ordnung select from where Notation Bsp: SELECT O, S FROM {S} rdfs:label {O} CONSTRUCT Query gibt Menge Trippeln zurück constuct from where Notation Bsp.: CONSTRUCT {Parent} foo:hasChild {Child} FROM {Child} foo:hasParent {Parent} Oxana Krieger Yuliya Grinshteyn
Regelbasierte Sprache TRIPLE vereinigt in sich eine Anfrage-Sprache und eine Sprache von Regeln Supports: Ressourcen & Namespaces, Abkürzungen Models ( Reihe von RDF Statements) Reification Regeln Transformationen Sprachenübersicht: Syntaktische Erweiterung der Hornlogik Syntaktisch ähnlich der F-Logik : subject[predikate object] (“molecule”). Oxana Krieger Yuliya Grinshteyn
TRIPLE Sprachenübersicht Statements, triples, molecules: – subject[predicate object] – subject[p1 o1; p2 o2; ...] – s1[p1 s2[p2 o] ] Reification: – stefan[believes <Ora[isAuthorOf homepage]> ] Logische Formeln: – usual logical connectives and quantifiers: – alle Variablen werden über (oder ) eingeführt Oxana Krieger Yuliya Grinshteyn
TRIPLE Sprachenübersicht Clauses: – Fakt: s[p1 o1; p2 o2; ...]. – Regel: X s1[p1X] s2[p2X] ... . Namespace und Resource abbreviations: – rdf := “http://www.w3.org/1999/02/22-rdf-syntax-ns#”. – isa := rdf:subClassOf Oxana Krieger Yuliya Grinshteyn
TRIPLE Sprachenübersicht Beispiel: Dublin Core Metadata dc := “http://purl.org/dc/elements/1.0/”. dfki := “http://www.dfki.de/”. @dfki:documents { dfki:d_01_01 [ dc:title “TRIPLE”; dc:creator “Michael Sintek”; dc:subject RDF; dc:subject triples; ... ]. } namespace abbreviations block Michael Sintek TRIPLE fact dc:title dc:creator dfki:d_01_01 dc:subject dc:subject RDF ... triples rule FORALL D <- D[dc:subject RDF]@dfki:documents. Ergebnis: dfki:d_01_01 Oxana Krieger Yuliya Grinshteyn
Regelbasierte Anfragesprache Versa Versa is a specialized language for addressing and querying an RDF model. It allows traversal of arcs, processing of node contents, and general expression evaluation. Unterstützt: boolesche Logik; set – Operationen; transitive Operationen; das Stringvergleich; Datentypen: Ressource spam:eggs @“http: // rdfinference.org“ String Number Boolean Oxana Krieger Yuliya Grinshteyn
Regelbasierte Anfragesprache Versa Versa Query Structure Query Traversal and filter expressions Forward traversal and filter expressions Backward traversal expressions Forward traversal operator list-expression - list-expression -> boolean-expression return Liste von Objekten Forward filter operator list-expression - list-expression |-> boolean-expression return Liste von Subjekten Oxana Krieger Yuliya Grinshteyn
Regelbasierte Anfragesprache Versa An illustration of the workings of a traversal expression type(t1) – p1->contains(„b“) type(t1) – p1->contains(„b“) type(t1) – p1->contains(„b“) Oxana Krieger Yuliya Grinshteyn
Regelbasierte Anfragesprache Versa all() - dc:date -> * Ergebnis: <List> <String>2001-03-04</String> </List> all() |- dc:date -> contains("-03-") Ergebnis: <List> <Resource> http://rdfinference.org/ril/issue-tracker/i2001030423 </Resource></List> all() - dc:date -> contains("-03-") Ergebnis: <List> <String>2001-03-04</String> </List> Oxana Krieger Yuliya Grinshteyn
Regelbasierte Anfragesprache Versa Backward traversal expression: Form : list <- list - boolean "2001-03-04" <- dc:date - * <List> <Resource> http://rdfinference.org/ril/issue-tracker/i2001030423 </Resource> </List> ("2001-03-04" <- dc:date - *) - dc:title -> * <List><String>Unnecessary abbreviation</String></List> Oxana Krieger Yuliya Grinshteyn
Regelbasierte Anfragesprache N3 Notation3 (N3) provides a text-based syntax for RDF. Therefore the data model of N3 conforms to the RDF data model. Additionally, N3 allows to dene rules, which are denoted using a special syntax. Such rules, whilst not a query language per se, can be used for the purpose of querying. Unterstützt: Namespace Abkürzungsmechanismus @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . Aggregatfunktionen z.B. count Rekursionen Oxana Krieger Yuliya Grinshteyn
Regelbasierte Anfragesprache N3 Namen der Variablen fangen mit dem Präfix „?“ an Bsp.: ?Var Statement subject predicat object Mehrere Objekte für ein Subjekt : sub pred1 obj1, pred2 obj2. Am Ende der Regel steht immer „ . “ Markierung von Blanck node durch die eckigen Klammern Query - Beispiel: ?y rdfs:label „foo“=>?y a:QueryResalt. – Gibt alle Ressourcen, die eine Label „foo“ haben, zurück. Oxana Krieger Yuliya Grinshteyn
5. Vergleich von Anfragesprachen RDQL TRIPLE SeRQL Versa N3 RQL Path Expressions + Optional Path Expressions - ° Union Difference Quantification Aggregation Recursion Reification Collection and Containers Namespace Language Lexical Space Value Space Oxana Krieger Yuliya Grinshteyn
5. Vergleich von Anfragesprachen Usecase Namespace z.B. Return all resources whose namespace starts with „http://www.uni-leipzig.de/“. Usecase Language: <acm:Topic rdf:about="#ACMTopic/Information_Systems/Database_Management"> <rdfs:label xml:lang="en“>Database Management</rdfs:label> <rdfs:label xml:lang="de“>Datenbankmanagement</rdfs:label> <acm:SubTopic rdf:resource="#ACMTopic/Information_Systems/Database_Management/Languages" /> </acm:Topic> Return the German label of the topic whose English label is „Database Management“. Oxana Krieger Yuliya Grinshteyn
Quellen Sesame RQL : a Tutorial Jena Tutorial – RDQL http://www.openrdf.org/doc/rql-tutorial.html Jena Tutorial – RDQL http://www.hpl.hp.com/semweb/doc/tutorial/RDQL/ The SeRQL query language(manual) http://www.openrdf.org/doc/users/ch06.html RDF Query using Versa http://www-106.ibm.com/ developerworks/xml/library/x- think10/index.html#1 TRIPLE – A Query, Inference and Transformation Language http://www.dfki.uni-kl.de/frodo/triple/iswc2002/TripleReport.pdf Notation 3 http://www.w3.org/DesignIssues/Notation3.html Comparison of Query Languages http://www.aifb.uni-karlsruhe.de/WBS/pha/rdf-query/ Oxana Krieger Yuliya Grinshteyn