Graph Pattern Semantik

25
Graph Pattern Semantik Michael Schmidt, 06.05.2008 1

description

Graph Pattern Semantik. Michael Schmidt, 06.05.2008. 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. Basic Graph Patterns. - PowerPoint PPT Presentation

Transcript of Graph Pattern Semantik

Page 1: Graph Pattern Semantik

Graph Pattern Semantik

Michael Schmidt, 06.05.2008

1

Page 2: Graph Pattern Semantik

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

Page 3: Graph Pattern Semantik

Basic Graph Patterns

Unendliche Menge von Variablen V Basic Graph Pattern

(t1, t2, t3) 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

Page 4: Graph Pattern Semantik

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

Page 5: Graph Pattern Semantik

Allgemeine Graph Patterns

Rekursive Definition Ein Basic Graph Pattern ist ein Graph

Pattern Wenn G1 und G2 Graph Patterns sind,

dann auch G1 UNION G2

Wenn G1 und G2 Graph Patterns sind, dann auch G1 AND G2

Wenn G1 und G2 Graph Pattern sind, dann auch G1 OPTIONAL G2

Wenn G ein Graph Pattern ist, und R eine (ggf. atomare) Filter-Bedingung, dann ist auch G FILTER R ein Graph Pattern

5

Page 6: Graph Pattern Semantik

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

Page 7: Graph Pattern Semantik

Beispiel: Mapping

?person ms:Person1

?name „Bill Gates“

?type foaf:Person

μ

myns:salary

7

Page 8: Graph Pattern Semantik

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

Page 9: Graph Pattern Semantik

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 „1000000“

μ1 μ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

Page 10: Graph Pattern Semantik

Mapping: Kompatibilität

?person lx:Person1μ2

?person ms:Person1

?name „Bill Gates“

?type foaf:Person

μ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

nichtkompatibel

Page 11: Graph Pattern Semantik

Auswertung von Graph Patterns

Ergebnis: Menge von Mappings Beispiel:

(?x,rdf:type,foaf:Person)

?x ms:Person1μ1

?x lx:Person1μ2

Ergebnis S={μ1, μ2}11

Page 12: Graph Pattern Semantik

Auswertung von Graph Patterns

Ergebnis: Menge von Mappings Beispiel:

(?x,rdf:type,foaf:Person)

?x ms:Person1μ1

?x lx:Person1μ2

S={{?x -> ms:Person1},

{?x -> lx:Person1}} 12

Page 13: Graph Pattern Semantik

Operationen auf Mapping-Mengen

UNION

JOIN

SETMINUS

LEFTJOIN

13

Page 14: Graph Pattern Semantik

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

Page 15: Graph Pattern Semantik

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

Page 16: Graph Pattern Semantik

MINUS von Mapping-Mengen

SETMINUS

{{?a -> w}, {?a -> x, ?b -> y}} \{{?a -> y}, {?a -> x, ?b -> y, ?c -> z}}= {{?a -> w}}

Beispiel

16

Page 17: Graph Pattern Semantik

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

Page 18: Graph Pattern Semantik

Graph Pattern Semantik

Definiert mit Hilfe der vorher diskutierten Operatoren

Basic Graph Pattern t, Graph Patterns Pi, Dokument D

μ(t) := ersetze Variablen in t nach μ

18

Page 19: Graph Pattern Semantik

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,“1000000“), (_: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

Page 20: Graph Pattern Semantik

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 -> „1000000“},

{?person -> lx:Person1, ?name -> „Linus Thorvals“}}

Ergebnis

?person ?name ?s1 ?s2ms:Person1 „Bill Gates“ _:salary1 „1000000“

lx:Person1 „Linus Thorvals“

Ergebnis in tabellarischer Form

20

Page 21: Graph Pattern Semantik

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;„1000000“

Mögliche Programmausgabe

21

Page 22: Graph Pattern Semantik

Erfülltheit von Filter-Bedingungen

Sei R eine Filter-Bedingung. μ erfülltBedingung R (μ |= R), wennSei R eine Filter-Bedingung. μ erfülltBedingung R (μ |= R), wenn

Analog zum zweiten Fall: <, <=, >=, >

22

Page 23: Graph Pattern Semantik

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 -> „1000000“},

{?person -> lx:Person1, ?name -> „Linus Thorvals“}}

P FILTER (?person = ms:Person1)

= {{?person -> lx:Person1, ?name -> „Linus Thorvals“}}

Ergebnis

23

Page 24: Graph Pattern Semantik

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

Page 25: Graph Pattern Semantik

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