Institut für Informatik Betriebliche Informationssysteme RDF Query Languages Oxana Krieger Yuliya Grinshteyn Oxana Krieger Yuliya Grinshteyn 1 RDF Anfragesprachen Übersicht Institut für Informatik Betriebliche Informationssysteme Gliederung 1. SQL/OQL- basierte Sprachen RQL RDQL: praktische Anwendung von Anfragen SeRQL 2. Regelbasierte Sprachen Triple Versa N3 3. Vergleich von Anfragesprachen Oxana Krieger Yuliya Grinshteyn 2 RDF Anfragesprachen SQL/OQL- basierte Anfragesprachen Institut für Informatik Betriebliche Informationssysteme 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 3 RDF Anfragesprachen RQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 4 RDF Anfragesprachen RQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 5 RDF Anfragesprachen RQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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: foo:worksFor Person rdf:type Company foo:ITCompany {Person} foo:worksFor {Company}. rdf:type{foo:ITCompany} Oxana Krieger Yuliya Grinshteyn 6 RDF Anfragesprachen RQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 from {X} @P {Y} // X - Subjekt // @P - Prädikat where Y like "Pablo" // Y - Objekt Oxana Krieger Yuliya Grinshteyn 7 RDF Anfragesprachen RDQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 8 RDF Anfragesprachen RDQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 9 RDF Anfragesprachen RDQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme Muster Graph • werden in der „where“-Klausel verwendet WHERE (?y, <http://www.w3.org/2001/vcard- rdf/3.0#Family>, "Smith") • Pfade ?Person foo:works For ?Compan y rdf:type foo:ITCompany (?Person, <foo:worksFor> ,?Company), (?Company, <rdf:type>, foo:ITCompany) • Knoten und Kanten können Variable, URIs du Literalen sein - Bespiel: (?PAINTER, cult:paints ,?PAINTING) Oxana Krieger Yuliya Grinshteyn 10 RDF Anfragesprachen RDQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 11 RDF Anfragesprachen Praktische Anwendung RDQL Anfragen • SELECT ?x, ?fname WHERE (?x, <http://www.w3.org/2001/vcard-rdf/3.0#FN>, ?fname) http://www.w3.org/2001/vcar d-rdf/3.0#FN ?x • Institut für Informatik Betriebliche Informationssysteme ?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) http://www.w3.org/2001/vcardrdf/3.0#Family Smith ?y http://www.w3.org/2001/vcardrdf/3.0#Given • (alternativ zu 1). SELECT ?x ?givenName WHERE (?x, <vCard:FN>, "John Smith") USING vCard FOR <http://www.w3.org/2001/vcard-rdf/3.0#> Oxana Krieger Yuliya Grinshteyn 12 RDF Anfragesprachen 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) ?resource • Institut für Informatik Betriebliche Informationssysteme http://www.w3 .org/ http://www.w3.or g/2001/ ?z 2001/vcardrdf/3.0#N ?givenName vcardrdf/3.0#Given SELECT ?resource WHERE (?resource, <info:age>, ?age) AND ?age >= 24 USING info FOR <http://somewhere/peopleInfo#> info:age ?resource Oxana Krieger Yuliya Grinshteyn ?age 13 RDF Anfragesprachen Praktische Anwendung RDQL Anfragen • Institut für Informatik Betriebliche Informationssysteme 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 info:age ?age vCard: v:Card:N Oxana Krieger Yuliya Grinshteyn ?y ?familyName Family 14 RDF Anfragesprachen SeRQL Institut für Informatik Betriebliche Informationssysteme 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 15 RDF Anfragesprachen SeRQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme Literalen • Bestehen aus 3 Teilen : Label, language tag ,Datentyp • Beispiele: • "foo" • "foo"@en • "<foo/>"^^<http://www.w3.org/1999/02/22-rdf-syntaxns#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 16 RDF Anfragesprachen SeRQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 17 RDF Anfragesprachen SeRQL: Pfad-Ausdrücke Institut für Informatik Betriebliche Informationssysteme • Multi-value Knoten 1. Variante: {subj1} pred1 {obj1, obj2, obj3} oder {subj1} pred1 {obj1}, {subj1} pred1 {obj2}, {subj1} pred1 {obj3} 2. Variante: - {subj1, subj2, subj3} pred1 {obj1} 3. Variante: {first} pred1 {middle1, middle2} pred2 {last} Oxana Krieger Yuliya Grinshteyn 18 RDF Anfragesprachen SeRQL: Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 19 RDF Anfragesprachen SeRQL Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme 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 20 RDF Anfragesprachen Regelbasierte Sprache TRIPLE Institut für Informatik Betriebliche Informationssysteme 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] Oxana Krieger Yuliya Grinshteyn (“molecule”). 21 RDF Anfragesprachen TRIPLE Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme • 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 22 RDF Anfragesprachen TRIPLE Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme • 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 23 RDF Anfragesprachen TRIPLE Sprachenübersicht Institut für Informatik Betriebliche Informationssysteme Beispiel: Dublin Core Metadata dc := “http://purl.org/dc/elements/1.0/”. dfki := “http://www.dfki.de/”. namespace abbreviations block @dfki:documents { dfki:d_01_01 [ dc:title “TRIPLE”; dc:creator “Michael Sintek”; dc:subject RDF; dc:subject triples; ... ]. } fact Michael Sintek TRIPLE dc:title dc:creator dfki:d_01_01 dc:subject dc:subject RDF ... triples rule FORALL D <- D[dc:subject RDF]@dfki:documents. Oxana Krieger Yuliya Grinshteyn Ergebnis: dfki:d_01_01 24 RDF Anfragesprachen Regelbasierte Anfragesprache Versa Institut für Informatik Betriebliche Informationssysteme 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 25 RDF Anfragesprachen Regelbasierte Anfragesprache Versa Institut für Informatik Betriebliche Informationssysteme 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 26 RDF Anfragesprachen Regelbasierte Anfragesprache Versa Institut für Informatik Betriebliche Informationssysteme 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 27 RDF Anfragesprachen Regelbasierte Anfragesprache Versa Institut für Informatik Betriebliche Informationssysteme all() - dc:date -> * Ergebnis: <List> <String>2001-03-04</String> </List> all() - dc:date -> contains("-03-") Ergebnis: <List> <String>2001-03-04</String> </List> Oxana Krieger Yuliya Grinshteyn all() |- dc:date -> contains("-03-") Ergebnis: <List> <Resource> http://rdfinference.org/ril/issue-tracker/i2001030423 </Resource></List> 28 RDF Anfragesprachen Regelbasierte Anfragesprache Versa Institut für Informatik Betriebliche Informationssysteme 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 29 RDF Anfragesprachen Regelbasierte Anfragesprache N3 Institut für Informatik Betriebliche Informationssysteme 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 30 RDF Anfragesprachen Regelbasierte Anfragesprache N3 Institut für Informatik Betriebliche Informationssysteme • 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 31 RDF Anfragesprachen 5. Vergleich von Anfragesprachen Institut für Informatik Betriebliche Informationssysteme 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 32 RDF Anfragesprachen 5. Vergleich von Anfragesprachen Institut für Informatik Betriebliche Informationssysteme • 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/Lan guages" /> </acm:Topic> Return the German label of the topic whose English label is „Database Management“. Oxana Krieger Yuliya Grinshteyn 33 RDF Anfragesprachen Quellen Institut für Informatik Betriebliche Informationssysteme • Sesame RQL : a Tutorial 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/xthink10/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 34