340 likes | 462 Views
RDF Query Languages. Oxana Krieger Yuliya Grinshteyn. Übersicht. SQL/OQL- basierte Sprachen RQL RDQL: praktische Anwendung von Anfragen SeRQL Regelbasierte Sprachen Triple Versa N3 Vergleich von Anfragesprachen. Gliederung. SQL/OQL- basierte Anfragesprachen.
E N D
RDF Query Languages Oxana Krieger Yuliya Grinshteyn Oxana Krieger Yuliya Grinshteyn
Übersicht • SQL/OQL- basierte Sprachen • RQL • RDQL: praktische Anwendung von Anfragen • SeRQL • Regelbasierte Sprachen • Triple • Versa • N3 • Vergleich von Anfragesprachen Gliederung 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
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: <, <=,= , >= , >, != RQL Sprachenübersicht 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
foo:ITCompany ?Person foo:works For ?Company rdf:type 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) 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
http://www.w3.org/2001/vcard-rdf/3.0#FN ?x ?fname Smith http://www.w3.org/2001/vcard-rdf/3.0#Family ?y ?givenName http://www.w3.org/2001/vcard-rdf/3.0#Given 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#> Oxana Krieger Yuliya Grinshteyn
info:age ?resource ?age http://www.w3.org/ 2001/vcard-rdf/3.0#N http://www.w3.org/2001/ vcard-rdf/3.0#Given ?resource ?z ?givenName 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#> Oxana Krieger Yuliya Grinshteyn
info:age v:Card:N ?resource ?age vCard: Family ?y ?familyName 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#> Oxana Krieger Yuliya Grinshteyn
SeRQL 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} • Variante: • {subj1, subj2, subj3} pred1 {obj1} • Variante: • {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 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[predicateobject] – 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-expressionreturn Liste von Objekten Forward filter operator list-expression - list-expression |-> boolean-expressionreturn 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 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 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