Archiv

Artikel Tagged ‘SPARQL’

[Semantic Web Technologies] SPARQL Test Tool und Lösungen

28. Januar 2010

Hallo zusammen,

Screenshot of the SPARQL Test ToolIn der letzten Veranstaltung hab ich festgestellt, daß ihr wohl teilweise Probleme damit habt, euch die SPARQL Queries vorzustellen. Auch waren wir uns bei den gefundenen Ergebnissen nicht immer hundertprozentig sicher, ob es auch wirklich so funktioniert. Also hab ich kurzerhand ein kleines Tool geschrieben, mit dem ihr eure Queries ausprobieren könnt.

Das Tool basiert auf  dem Jena Framework und dem zugehörigen ARQ SPARQL Prozessor. ARQ ist ein sehr mächtiges Tool, wie wir ja auch schon in der Vorlesung sehen konnten (ARQ implementiert viele Features über den Standard hinaus).

Was kann man mit diesem Tool nun machen? Die Bedienung ist ganz einfach:  Ihr gebt zunächst auf der linken Seite die Daten (im TURTLE Format) ein, auf die ihr eure Abfrage stellen wollt. Rechts oben tragt ihr dann die Query ein, die ihr ausprobieren wollt. Nach einem Druck auf den “Query” Button werden die Daten geparst, in ein Jena Model gepackt und dann mit der eingegebenen Query abgefragt.

Das Tool kann alle vier Abfragearten (SELECT, ASK, CONSTRUCT und DESCRIBE) und merkt sich beim Beenden die zuletzt verarbeiteten Daten, so dass diese bei einem erneuten Aufruf wieder zur Verfügung stehen. Den Code der Anwendung habe ich direkt unter die GPL gestellt. Ich habe euch auch gleich zwei Pakete geschnürt. Das erste ist ein ausführbares JAR-File, das direkt alles nötige enthält. Einfach runterladen und mit java -jar ausführen. Das zweite Paket enthält den Source-Code. Dieser ist nicht sehr kompliziert und besteht lediglich aus vier Files. Zum Übersetzen und Ausführen braucht ihr die JARs des Jena Frameworks.

SPARQL Test Tool (Executable JAR File, including Jena)

SPARQL Test Tool (Source)

So, nun zu den Lösungen der SPARQL Aufgaben:

Aufgabe 1

@prefix   ex: <http://example.org/> .
@prefix   xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:Sonne  ex:radius   "1.392e6"^^xsd:double ;
          ex:satellit ex:Merkur, ex:Venus, ex:Erde, ex:Mars .
ex:Merkur ex:radius   "2439.7"^^xsd:double .
ex:Venus  ex:radius   "6051.9"^^xsd:double .
ex:Erde   ex:radius   "6372.8"^^xsd:double ;
          ex:satellit ex:Mond .
ex:Mars   ex:radius   "3402.5"^^xsd:double ;
          ex:satellit ex:Phobos, ex:Deimos .
ex:Mond   ex:name     "Mond"@de, "Moon"@en ;
          ex:radius   "1737.1"^^xsd:double .
ex:Phobos ex:name     "Phobos" .
ex:Deimos ex:name     "Deimos".

Objekte, die um die Sonne oder um einen Satelliten der Sonne kreisen

SELECT ?x WHERE {
 { ex:Sonne ex:satellit ?x } UNION
 { ex:Sonne ex:satellit ?y.
   ?y       ex:satellit ?x } }

Objekte mit einem Volumen von über 2*10^10 (km^3) (Objekte mit Radius können mit der Formel V = 4/3πr^3 berechnet werden) und falls vorhanden, mit dem Objekt dessen Satellit sie sind.

SELECT ?x ?y WHERE{
 ?x ex:radius ?rad .
 FILTER( 4*3.14*?rad*?rad*?rad/3 > 20000000000 ).
 OPTIONAL { ?y ex:satellit ?x . } }

Objekte mit einem Satelliten, für den ein Name in englischer Sprache angegeben worden ist, die außerdem Satellit eines Objekts von über 3000 (km) Durchmesser sind

SELECT ?Objekt
{
   ?Objekt   ex:satellit ?Satellit .
   ?Satellit ex:name     ?SatName .
   FILTER( LANG(?SatName) = "en"  ).
   ?GrossObjekt ex:satellit ?Objekt .
   ?GrossObjekt ex:radius ?Radius .
   FILTER( 2*?Radius > 3000 )
}

Objekte mit zwei oder mehr Satelliten (nehmen Sie an, dass unterschiedliche URIs hier unterschiedliche Objekte bezeichnen)

SELECT DISTINCT ?x {
   ?x ex:satellit ?a .
   ?x ex:satellit ?b .
   FILTER( ! sameTERM( ?a, ?b ) ) }

Aufgabe 2

@prefix   ex: <http://example.org/> .
@prefix   xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix   rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
ex:Sonne  rdf:type ex:Himmelskörper ;
          ex:radius   "1.392e6"^^xsd:double ;
          ex:satellit ex:Merkur, ex:Venus, ex:Erde, ex:Mars .
ex:Merkur rdf:type ex:Himmelskörper ;
          ex:radius   "2439.7"^^xsd:double .
ex:Venus  rdf:type ex:Himmelskörper ;
          ex:radius   "6051.9"^^xsd:double .
ex:Erde   rdf:type ex:Himmelskörper ;
          ex:radius   "6372.8"^^xsd:double ;
          ex:satellit ex:Mond .
ex:Mars   rdf:type ex:Himmelskörper ;
          ex:radius   "3402.5"^^xsd:double ;
          ex:satellit ex:Phobos, ex:Deimos .
ex:Mond   rdf:type ex:Himmelskörper ;
          ex:name     "Mond"@de, "Moon"@en ;
          ex:radius   "1737.1"^^xsd:double .
ex:Phobos rdf:type ex:Himmelskörper ;
          ex:name     "Phobos" .
ex:Deimos rdf:type ex:Himmelskörper ;
          ex:name     "Deimos" .

Wie kann man alle Himmelskörper selektieren, die KEINEN Satelliten haben?

SELECT ?x {
 ?x rdf:type ex:Himmelskörper.
 OPTIONAL { ?x ex:satellit ?satellit }.
 FILTER( !BOUND( ?satellit ) ) }

Aufgabe 3

@prefix   ex: <http://example.org/> .
@prefix   xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:a ex:value "1"^^xsd:integer ;
     ex:value "3"^^xsd:integer .
ex:b ex:value "2"^^xsd:integer .

Was erwarten Sie als Ergebnis der Anfragen?

1. SELECT ?s ?v WHERE{  ?s ex:value ?v } ORDER BY ?v

?s ?v
a 1
b 2
a 3

Wie erwartet werden die Ergebnisse nach v sortiert

2. SELECT ?s WHERE{  ?s ex:value ?v } ORDER BY ?v

?s
a
b
a

Auch hier werden die Ergebnisse wieder nach v sortiert. v wird nur
nicht angezeigt

3. SELECT ?s WHERE{  ?s ex:value ?v } ORDER BY DESC(?v) LIMIT 2

?s
a
b

Diesmal wird genau umgekehrt sortiert. Anschließend werden aber nur
noch zwei Ergebnisse angezeigt

4. SELECT DISTINCT ?s WHERE{  ?s ex:value ?v } ORDER BY ?v

?s
a
b

Ansich die selbe Anfrage wie (2) nur das wir nun mit DISTINCT
zusätzlich doppelte Werte aussortieren.

4a. SELECT DISTINCT ?s WHERE{  ?s ex:value ?v } ORDER BY ?v LIMIT 1

?s
a

Auch hier gibt es keine Überraschungen, das liegt an der festgelegten
Reihenfolge der Modifikatoren bei SPARQL:
1. Sortierung anhand von ORDER BY
2. Entfernung nicht ausgewählter Variablen
3. Entfernung doppelter Ergebnisse (DISTINCT)
4. Entfernung der Ergebniszeilen vor dem OFFSET
5. Entfernung der überschüssigen Zeilen nach LIMIT
Siehe hierzu auch im Skript zu SPARQL auf Seite 25

Anbei nochmal die Lösungen im txt Format. So lassen sich die Daten evtl. leichter kopieren / einfügen.

Lösungen zu SPARQL (txt)

Reblog this post [with Zemanta]

Steffen Schloenvoigt , , , , , ,

[Semantic Web Technologies] Prüfungstermine

26. Januar 2010

Hallo zusammen,

hier die Prüfungstermine für die mündliche Prüfung in Semantic Web Technologien am 4. Februar 2010:

Student Studiengang Uhrzeit
Ritter, Mario SEB 15:45
Faulhaber, Christof TIB 16:10
Petersen, Bleicke SEB 16:35
Hohlfeld, Christian SEB 17:00
Schweighart, Jan SEB 17:25
Ly, Khang TIB 17:50

UPDATE 27. Januar, 9:25: Der Raum für die Prüfung ist F110.

UPDATE 1. Februar, 10:00: Als Beisitzer für die Prüfung hat sich Herr Köppel bereiterklärt.

Reblog this post [with Zemanta]

Steffen Schloenvoigt , , , ,

[Semantic Web Technologies] Übung 3 – SPARQL und OWL

17. Januar 2010

Mit dieser Übung werden Ihre Kenntnisse in SPARQL und OWL (Web Ontology Language) überprüft.

Der erste Teil des Übungsblattes behandelt in den Aufgaben 1, 2 und 3 die Definition von SPARQL SELECT Anfragen inklusive einiger Besonderheiten.

Der zweite Teil beschäftigt sich dann mit der Definition von OWL Ontologien sowie dem Folgern von Schlüssen aus vorhandenen Wissensbasen.

Uebung 3 – SPARQL und OWL (PDF)

Reblog this post [with Zemanta]

Steffen Schloenvoigt , , , ,

[Semantic Web Technologies] Slides zu Vorlesung 7+8 : SPARQL

10. Dezember 2009

Im Anschluss an die RDF(S)-Frameworks und einer Übungseinheit, haben wir uns in den letzten beiden Vorlesungen mit dem Thema SPARQL, der SPARQL Protocol And RDF Query Language, befasst.

Dabei wurden folgende Themen behandelt:

  • SPARQL Query Language – Anfragesprache
    • Erstellen einfacher Anfragen – Wie funktionieren Anfragemuster
    • Behandlung von Literalen und Blank Nodes
    • Gruppierung von Mustern, optionale Muster, alternative Muster, Kombination
    • Filter, Vergleichsoperatore, Funktionen
    • Modifikatoren zur Sortierung, Entfernung doppelter Lösungen und zur Aufteilung von Ergebnismengen
    • Anfragetypen in SPARQL – SELECT, CONSTRUCT, ASK und DESCRIBE
    • RDF Dataset – Default und Named Graphen
  • SPARQL Query Result XML Format für SELECT und ASK Anfragen
  • SPARQL Protokoll
  • Zukünftige Features von SPARQL
    • Aggregatfunktionen – COUNT, SUM, AVG etc.
    • Subqueries
    • Negation
    • Project Expressions
    • SPARQL Update – RDF Graphen verändern per Query Language
    • Dienstbeschreibung
    • Übersicht über eventuelle weitere Features

PDF Download

Wer SPARQL selbst ausprobieren möchte, ohne selbst einen SPARQL Endpoint zu installiere, kann dies etwa auf einem der Webservices der DBpedia tun:

Literatur:

Reblog this post [with Zemanta]

Steffen Schloenvoigt , , ,

Additional Information