Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Graph Pattern Semantik Michael Schmidt, 06.05.2008 1.

Ähnliche Präsentationen


Präsentation zum Thema: "Graph Pattern Semantik Michael Schmidt, 06.05.2008 1."—  Präsentation transkript:

1 Graph Pattern Semantik Michael Schmidt,

2 RDF Formalisierung 3 disjunkte Mengen URIs (U) Blank Nodes (B) Literale (L) Wir schreiben UB für die Vereinigung von U und B usw. RDF Tripel (s,p,o) UB x U x UBL RDF Datenbank: Menge von Tripeln 2

3 Basic Graph Patterns Unendliche Menge von Variablen V Basic Graph Pattern (t 1, t 2, t 3 ) UV x UV x ULV Beispiele für Basic Graph Patterns (?person, rdf:type, foaf:Person) (lx:Person1, ?y, ?z) (?x,?y,?z) (lx:Person1, foaf:name, Linus Torvalds) 3

4 Filter-Bedingungen Atomare Filter-Bedingungen (A op B), where A ULV B ULV op { =,>} Filter-Bedingungen Verknüpfung von atomaren Filter-Bedingungen durch Operatoren && (and), || (or), or ! (not) Beispiele: Atomar: (?a = test), (?a < ?b) Zusammengesetzt: ((?a = a) && !(?b < ?c)) 4

5 Allgemeine Graph Patterns Rekursive Definition Ein Basic Graph Pattern ist ein Graph Pattern Wenn G 1 und G 2 Graph Patterns sind, dann auch G 1 UNION G 2 Wenn G 1 und G 2 Graph Patterns sind, dann auch G 1 AND G 2 Wenn G 1 und G 2 Graph Pattern sind, dann auch G 1 OPTIONAL G 2 Wenn G ein Graph Pattern ist, und R eine (ggf. atomare) Filter-Bedingung, dann ist auch G FILTER R ein Graph Pattern 5

6 Mappings zur Ergebnisrepräsentation Graph Patterns werden auf RDF Dokumenten ausgewertet Darstellung einer möglichen Lösung als Mapping von Variablen im Graph Pattern zu Elementen im Eingabegraphen Mapping ist eine partielle Funktion μ : V UBL 6

7 Beispiel: Mapping ?person ms:Person1 ?name Bill Gates ?type foaf:Person μ myns:salary 7

8 Mappings Domäne eines Mappings Menge der Variablen, für die die Abbildung definiert ist Für das Mapping oben: dom(μ)={?person,?name,?type} ?person ms:Person1 ?name Bill Gates ?type foaf:Person μ 8

9 Mapping: Kompatibilität Zwei Mappings μ 1, μ 2 kompatibel, wenn für alle x dom(μ 1 ) dom(μ 2 ): μ 1 (x)=μ 2 (x) ?person ms:Person1 ?name Bill Gates ?type foaf:Person ?person ms:Person1 ?name Bill Gates ?salary μ1μ1 μ2μ2 dom(μ 1 )={?person,?name,?type) dom(μ 2 )={?person,?name,?salary) dom(μ 1 ) dom(μ 2 )={?person,?name) μ 1 (?person) = μ 2 (?person) = ms:Person1 μ 1 (?name) = μ 2 (?name) = Bill Gates 9 kompatibel

10 Mapping: Kompatibilität ?person lx:Person1 μ2μ2 ?person ms:Person1 ?name Bill Gates ?type foaf:Person μ1μ1 dom(μ 1 )={?person,?name,?type) dom(μ 2 )={?person) dom(μ 1 ) dom(μ 2 )={?person) μ 1 (?person) = ms:Person1 μ 2 (?person) = lx:Person1 Zwei Mappings μ 1, μ 2 kompatibel, wenn für alle x dom(μ 1 ) dom(μ 2 ): μ 1 (x)=μ 2 (x) 10 nicht kompatibel

11 Auswertung von Graph Patterns Ergebnis: Menge von Mappings Beispiel: (?x,rdf:type,foaf:Person) ?x ms:Person1 μ1μ1 ?x lx:Person1 μ2μ2 Ergebnis S={μ 1, μ 2 } 11

12 Auswertung von Graph Patterns Ergebnis: Menge von Mappings Beispiel: (?x,rdf:type,foaf:Person) ?x ms:Person1 μ1μ1 ?x lx:Person1 μ2μ2 S={{?x -> ms:Person1}, {?x -> lx:Person1}} 12

13 Operationen auf Mapping-Mengen UNION JOIN SETMINUS LEFTJOIN 13

14 UNION von Mapping-Mengen {{?a -> x}, {?a -> x, ?b -> y}} {{?a -> x}, {?b -> y}} = {{?a -> x}, {?a -> x, ?b -> y}, {?b -> y}} UNION Beispiel 14

15 JOIN von Mapping-Mengen JOIN {{?a -> w}, {?a -> x, ?b -> y}} {{?a -> y}, {?b -> y, ?c -> z}} = {{?a -> w, ?b -> y, ?c -> z}, {?a -> x, ?b -> y, ?c -> z}} Beispiel 15

16 MINUS von Mapping-Mengen SETMINUS {{?a -> w}, {?a -> x, ?b -> y}} \ {{?a -> y}, {?a -> x, ?b -> y, ?c -> z}} = {{?a -> w}} Beispiel 16

17 LEFTJOIN von Mapping-Mengen LEFTJOIN {{?a -> w}, {?a -> x, ?b -> y}} {{?a -> y}, {?a -> x, ?b -> y, ?c -> z}} = ({{?a -> w}, {?a -> x, ?b -> y}} {{?a -> y}, {?a -> x, ?b -> y, ?c -> z}}) ({{?a -> w}, {?a -> x, ?b -> y}} \ {{?a -> y}, {?a -> x, ?b -> y, ?c -> z}}) = {{?a -> x, ?b -> y, ?c -> z}} {{?a -> w}} = {{?a -> x, ?b -> y, ?c -> z}}, {{?a -> w}} Beispiel 17

18 Graph Pattern Semantik Definiert mit Hilfe der vorher diskutierten Operatoren Basic Graph Pattern t, Graph Patterns P i, Dokument D μ(t) := ersetze Variablen in t nach μ 18

19 Beispiel Graph Pattern Semantik D={ (ms:Person1,rdf:type,foaf:Person), (ms:Person1,foaf:name,Bill Gates), (ms:Person1,foaf:knows,lx:Person1), (ms:Person1,myns:salary,_:salary1), (_:salary1,rdf:value, ), (_:salary1,myns:unit,US Dollar), (lx:Person1,rdf:type,foaf:Person), (lx:Person1,foaf:knows,ms:Person1) (lx:Person1,foaf:name,Linus Torvalds), (lx:Person1,foaf:knows,lx:Person2) } ((?person,rdf:type,foaf:Person) AND (?person,foaf:name,?name)) OPTIONAL ((?person,myns:salary,?s1) AND (?s1,rdf:value,?s2)) Dokument Graph Pattern 19

20 Ergebnis und Ergebnisdarstellung ((?person,rdf:type,foaf:Person) AND (?person,foaf:name,?name)) OPTIONAL ((?person,myns:salary,?s1) AND (?sal1,rdf:value,?s2)) Graph Pattern P [[P]] D ={{?person -> ms:Person1, ?name -> Bill Gates, ?s1 -> _:salary1, ?s2 -> }, {?person -> lx:Person1, ?name -> Linus Thorvals}} Ergebnis ?person?name?s1?s2 ms:Person1Bill Gates_:salary lx:Person1Linus Thorvals Ergebnis in tabellarischer Form 20

21 Ergebniscodierung in Implementierung Ausgabe in tabellarischer Form in CSV-Format Zeile 1: Variablennamen in beliebiger Reihenfolge, durch Kommata getrennt Folgende Zeilen: Ergebnistupel in beliebiger Reihenfolge ?name;?person;?s1;?s2 Linus Thorvals;lx:Person1;; Bill Gates;ms:Person1;_:salary1; Mögliche Programmausgabe 21

22 Erfülltheit von Filter-Bedingungen Sei R eine Filter-Bedingung. μ erfüllt Bedingung R (μ |= R), wenn Sei R eine Filter-Bedingung. μ erfüllt Bedingung R (μ |= R), wenn Analog zum zweiten Fall: =, > 22

23 Semantik von Filter-Bedingungen Erhalte Mappings, die Bedingung erfüllen P FILTER (?person = lx:Person1) Graph Pattern P FILTER R [[P]] D ={{?person -> ms:Person1, ?name -> Bill Gates, ?s1 -> _:salary1, ?s2 -> }, {?person -> lx:Person1, ?name -> Linus Thorvals}} P FILTER (?person = ms:Person1) = {{?person -> lx:Person1, ?name -> Linus Thorvals}} Ergebnis 23

24 Implementierung Einlesen von Graph Patterns aus Datei GraphPattern ::= SimpleGraphPattern | ComposedGraphPattern | FilterGraphPattern SimpleGraphPattern ::= ( Subject, Predicate, Object ) ComposedGraphPattern ::= SimpleGraphPattern Operator SimpleGraphPattern FilterGraphPattern ::= SimpleGraphPattern FILTER FilterCondition Subject ::= URI | Variable Predicate ::= URI | Variable Object ::= URI | Literal | Variable FilterCondition ::= FilterSubexp FilterOperator FilterSubexp FilterSubExp ::= URI | Literal | Variable Operator ::= AND | UNION | OPTIONAL FilterOperator ::= | >=, wobei URI eine URI ist (möglicherweise in Prefix-Notation), Literal ein String in Anführungszeichen, und Variable eine Variable der Form ?[a-zA-Z]+ (z.B. ?name, ?x, ?abcD) 24

25 Aufgaben Berechne auf dem Datensatz D (Folie 19): (a) [[(?person1,foaf:knows,?person2) AND (?person2,foaf:knows,?person1]] D (b) [[(?person1,rdf:type,foaf:Person) OPTIONAL ((?person1,foaf:knows,?person2) AND (?person2,myns:salary,?sal1) AND (?sal1,rdf:value,?sal2))]] D Was berechnen die Anfragen (in Worten)? 25


Herunterladen ppt "Graph Pattern Semantik Michael Schmidt, 06.05.2008 1."

Ähnliche Präsentationen


Google-Anzeigen