SPARQL (5. Übung SWebT1 WS07/08)
Aus Semantic-Web-Grundlagen
Version vom 11:15, 12. Jan. 2009 bei Pascal Hitzler (Diskussion | Beiträge)
Übung | |
---|---|
SPARQL
| |
Dozent | Sebastian Rudolph |
Datum | Jan 21 2008 |
von | 11:30 |
bis | 13:00 |
Ort | Gebäude 11.40 Raum 231 |
Veranstaltungsreihe SWebT1 WS07/08
| |
Nummer | 5 |
Diese Übung umfasst Stoff aus den vorangegangenen beiden Vorlesungen zu SPARQL-Syntax und SPARQL-Semantik.
Download: Übungsblatt (PDF)
Inhaltsverzeichnis |
Lösungen
Aufgabe 5.1
Anfrage 1
PREFIX ex: <http<nowiki>://</nowiki>example.org/>
SELECT ?objekt
WHERE
{ { ex:Sonne ex:satellit ?objekt . } UNION
{ ex:Sonne ex:satellit ?satellit .
?satellit ex:satellit ?objekt . }
}
SELECT ?objekt
WHERE
{ { ex:Sonne ex:satellit ?objekt . } UNION
{ ex:Sonne ex:satellit ?satellit .
?satellit ex:satellit ?objekt . }
}
Anfrage 2
PREFIX ex: <http<nowiki>://</nowiki>example.org/>
SELECT ?objekt ?zentrum
WHERE
{ { ?objekt ex:radius ?radius }
OPTIONAL { ?zentrum ex:satellit ?objekt }
FILTER ( 4 / 3 * 3.1416 * ?radius * ?radius * ?radius > 20000000000 )
}
SELECT ?objekt ?zentrum
WHERE
{ { ?objekt ex:radius ?radius }
OPTIONAL { ?zentrum ex:satellit ?objekt }
FILTER ( 4 / 3 * 3.1416 * ?radius * ?radius * ?radius > 20000000000 )
}
Anfrage 3
PREFIX ex: <http<nowiki>://</nowiki>example.org/>
SELECT ?objekt
WHERE
{ ?objekt ex:satellit ?satellit .
?satellit ex:name ?name .
?zentrum ex:satellit ?objekt .
?zentrum ex:radius ?radius .
FILTER ( langMATCHES( LANG(?name), "en") )
FILTER ( 2 * ?radius > 3000 )
}
SELECT ?objekt
WHERE
{ ?objekt ex:satellit ?satellit .
?satellit ex:name ?name .
?zentrum ex:satellit ?objekt .
?zentrum ex:radius ?radius .
FILTER ( langMATCHES( LANG(?name), "en") )
FILTER ( 2 * ?radius > 3000 )
}
Anfrage 4
PREFIX ex: <http<nowiki>://</nowiki>example.org/>
SELECT DISTINCT ?objekt
WHERE
{ ?objekt ex:satellit ?satellit1 .
?objekt ex:satellit ?satellit2 .
FILTER ( !sameTERM(?satellit1,?satellit2) )
}
SELECT DISTINCT ?objekt
WHERE
{ ?objekt ex:satellit ?satellit1 .
?objekt ex:satellit ?satellit2 .
FILTER ( !sameTERM(?satellit1,?satellit2) )
}
Aufgabe 5.2
Anfrage 1
Union(BGP(<http<nowiki>://</nowiki>example.org/Sonne> <http<nowiki>://</nowiki>example.org/satellit> ?objekt.),
Join(BGP(<http<nowiki>://</nowiki>example.org/Sonne> <http<nowiki>://</nowiki>example.org/satellit> ?satellit.),
BGP(?satellit <http<nowiki>://</nowiki>example.org/satellit> ?objekt.)
)
)
Join(BGP(<http<nowiki>://</nowiki>example.org/Sonne> <http<nowiki>://</nowiki>example.org/satellit> ?satellit.),
BGP(?satellit <http<nowiki>://</nowiki>example.org/satellit> ?objekt.)
)
)
Anfrage 2
Filter((3/4 * 3.1416 * ?radius * ?radius * ?radius > 20000000000),
LeftJoin(
BGP(?objekt <http<nowiki>://</nowiki>example.org/radius> ?radius.),
BGP(?zentrum <http<nowiki>://</nowiki>example.org/satellit> ?objekt.),
true
)
)
LeftJoin(
BGP(?objekt <http<nowiki>://</nowiki>example.org/radius> ?radius.),
BGP(?zentrum <http<nowiki>://</nowiki>example.org/satellit> ?objekt.),
true
)
)
Anfrage 3
Filter(((langMATCHES( LANG(?name), "en")) && (2 * ?radius > 3000)),
Join(
Join(
Join(
BGP(?objekt <http<nowiki>://</nowiki>example.org/satellit> ?satellit.),
BGP(?satellit <http<nowiki>://</nowiki>example.org/name> ?name. )
),
BGP(?zentrum <http<nowiki>://</nowiki>example.org/satellit> ?objekt.)
),
BGP(?zentrum <http<nowiki>://</nowiki>example.org/radius ?radius>)
)
)
Join(
Join(
Join(
BGP(?objekt <http<nowiki>://</nowiki>example.org/satellit> ?satellit.),
BGP(?satellit <http<nowiki>://</nowiki>example.org/name> ?name. )
),
BGP(?zentrum <http<nowiki>://</nowiki>example.org/satellit> ?objekt.)
),
BGP(?zentrum <http<nowiki>://</nowiki>example.org/radius ?radius>)
)
)
Anfrage 4
Filter((!sameTERM(?satellit1,?satellit2)),
Join(
BGP(?objekt <http<nowiki>://</nowiki>example.org/satellit> ?satellit1.),
BGP(?objekt <http<nowiki>://</nowiki>example.org/satellit> ?satellit2.),
)
)
Join(
BGP(?objekt <http<nowiki>://</nowiki>example.org/satellit> ?satellit1.),
BGP(?objekt <http<nowiki>://</nowiki>example.org/satellit> ?satellit2.),
)
)
Aufgabe 5.4
Genaugenommen ist die Aufgabe so mit der ursprünglichen Wissensbasis nicht lösbar, da sich dort nicht feststellen lässt, welche Knoten des entsprechenden RDF-Graphen Himmelskörper repräsentieren. Geht man davon aus, dass jeder Himmelskörper mit einem entsprechenden Typ versehen wird, also Tripel der Form
ex:Merkur rdf:type ex:Himmelskörper .
in der Wissensbasis enthalten sind, so lautet die Lösung:
PREFIX ex: <http<nowiki>://</nowiki>example.org/>
SELECT ?objekt
WHERE
{ { ?objekt rdf:type ex:Himmelskörper }
OPTIONAL { ?objekt ex:satellit ?satellit }
FILTER ( !BOUND(?satellit) )
}
SELECT ?objekt
WHERE
{ { ?objekt rdf:type ex:Himmelskörper }
OPTIONAL { ?objekt ex:satellit ?satellit }
FILTER ( !BOUND(?satellit) )
}
Fakten zu SPARQL (5. Übung SWebT1 WS07/08)RDF-Feed
Datum | 21. Januar 2008 + |
Dozent | Sebastian Rudolph + |
Endzeit | 21. Januar 2008 13:00 + |
Nummer | 5 + |
Ort | Gebäude 11.40 Raum 231 + |
Serie | SWebT1 WS07/08 + |
Startzeit | 21. Januar 2008 11:30 + |
Titel | SPARQL + |
Unterlagen | Uebung5 sparql.pdf + |