SPARQL

Sparql
Paradigma Abfragesprache
Entwickler W3c
Erstmals erschienen 2008; Vor 14 Jahren
Stabile Version
1.1 / 21 März 2013; Vor 9 Jahren
Webseite www.W3.org/Tr/sparql11-Query/
Haupt Implementierungen
Jena,[1] OpenLink Virtuoso[1]

Sparql (ausgesprochen "funkeln" /ˈspːkəl/, a Rekursives Akronym[2] zum Sparql -Protokoll und RDF -Abfragesprache) ist ein RDF -Abfragesprache-das ist ein semantisch Abfragesprache zum Datenbanken—Able, um Daten abzurufen und zu manipulieren, die in gespeicherten Daten gespeichert sind Ressourcenbeschreibung Framework (RDF) Format.[3][4] Es wurde von der Standard gemacht RDF -Datenzugriff Arbeitsgruppe (Dawg) der World Wide Web Konsortiumund ist als eine der Schlüsseltechnologien der anerkannt Semantisches Web. Am 15. Januar 2008 wurde Sparql 1.0 von W3C als offizielle Empfehlung anerkannt.[5][6] und Sparql 1.1 im März 2013.[7]

Sparql ermöglicht eine Abfrage, aus der bestehen kann Dreifachmuster, Konjunktionen, DISJUNKTIONENund optional Muster.[8]

Implementierungen für mehrere Programmiersprachen existieren.[9] Es gibt Tools, mit denen man eine Sparql-Abfrage für einen Sparql-Endpunkt, z.[10] Darüber hinaus existieren Tools, um Sparql -Abfragen in andere Abfragsprachen zu übersetzen, zum Beispiel in Sql[11] und zu XQuery.[12]

Vorteile

Mit SPARQL können Benutzer Abfragen gegen das schreiben, was lose als "Schlüsselwert" -Daten oder insbesondere Daten, die dem folgen, als "Schlüsselwert" bezeichnet werden können RDF Spezifikation der W3c. Somit ist die gesamte Datenbank eine Reihe von Tripel "Subjektvorhersage-Objekt". Dies ist analog zu einigen NoSQL Die Verwendung des Begriffs "Dokumentschlüssel-Wert" durch Datenbanken, wie z. MongoDB.

Im Sql relationale Datenbank Bedingungen, RDF Daten können auch als Tabelle mit drei Spalten betrachtet werden - der Subjektspalte, der Prädikatspalte und der Objektspalte. Das Subjekt in RDF ist analog zu einer Entität in a SQL -Datenbank, wobei die Datenelemente (oder Felder) für ein bestimmtes Geschäftsobjekt in mehreren Spalten platziert sind, manchmal über eine Tabelle ausgebreitet und durch a identifiziert werden einzigartiger Schlüssel. In RDF werden diese Felder stattdessen als separate Prädikat-/Objektzeilen dargestellt, die denselben Thema teilen, häufig der gleiche eindeutige Schlüssel, wobei das Prädikat analog zum Spaltennamen und dem Objekt der tatsächlichen Daten ist. Im Gegensatz zu relationalen Datenbanken ist die Objektspalte heterogen: Der Datentyp pro Zellen wird normalerweise impliziert (oder in der angegeben Ontologie) bis zum Prädikat Wert. Auch im Gegensatz zu SQL kann RDF mehrere Einträge pro Prädikat haben. Zum Beispiel könnte man mehrere "Kinder" -Inträge für eine einzige "Person" haben und Sammlungen solcher Objekte wie "Kinder" zurückgeben.

Somit liefert SPARQL einen vollständigen Satz analytischer Abfragevorgänge wie z. BEITRETEN, SORTIEREN, AGGREGAT für Daten, deren Schema ist anwesend Teil der Daten, anstatt eine separate Schema -Definition zu benötigen. Schemainformationen (Ontologie) werden jedoch häufig extern bereitgestellt, damit verschiedene Datensätze eindeutig verbinden. Darüber hinaus bietet Sparql spezifische Graph Traversal -Syntax für Daten, die als Diagramm betrachtet werden können.

Das folgende Beispiel zeigt eine einfache Abfrage, die die Ontologie -Definition nutzt foaf ("Freund eines Freundes").

Insbesondere die folgende Abfrage gibt Namen und E -Mails jeder Person im Datensatz zurück:

PRÄFIX foaf:  AUSWÄHLEN ?Name   ?Email WO  {  ?Person  a  foaf:Person .  ?Person  foaf:Name  ?Name .  ?Person  foaf:mbox  ?Email .  } 

Diese Abfrage schließt alle Dreifachs mit einem passenden Motiv zusammen, bei dem das Typ -Prädikat, "a", Ist eine Person (FOAF: Person), und die Person hat einen oder mehrere Namen ((FOAF: Name) und Postfächer (FOAF: Mbox).

Der Autor dieser Abfrage entschied sich, auf das Thema mit dem variablen Namen zu verweisen. "?Person"Für die lesbare Klarheit. Da das erste Element des Triple immer das Thema ist, hätte der Autor genauso leicht einen variablen Namen wie" wie z. "Subj" oder "?x"Wie auch immer der Name ausgewählt wird, er muss in jeder Zeile der Abfrage gleich sein, um zu bedeuten, dass der Abfragemotor Triple mit demselben Thema verbinden soll.

Das Ergebnis des Join ist eine Reihe von Zeilen - ?Person, ?Name, ?Email. Diese Abfrage gibt die zurück ?Name und ?Email Weil ?Person ist oft eher ein komplexer URI als eine menschenfreundliche Schnur. Beachten Sie, dass alle ?Person Kann mehrere Mailboxen haben, also im zurückgegebenen Satz a ?Name Zeile wird möglicherweise mehrmals für jede Mailbox angezeigt.

Diese Abfrage kann an mehrere Sparql -Endpunkte verteilt werden (Dienste, die Sparql -Abfragen und Rückgabergebnisse akzeptieren), berechnet und gesammelt, ein Verfahren, das als bekannt ist Föderierte Abfrage.

Egal, ob in der Föderation oder lokal, zusätzliche dreifache Definitionen in der Abfrage können zu verschiedenen Fachtypen wie Automobilen verbunden werden, um einfache Abfragen beispielsweise eine Liste von Namen und E -Mails für Personen, die Automobile mit einem hohen Lauf fahren, zurückzugeben. Kraftstoffeffizienz.

Abfrageformen

Bei Abfragen, die Daten aus der Datenbank lesen, gibt die SPARQL -Sprache vier verschiedene Abfragemarianten für verschiedene Zwecke an.

AUSWÄHLEN Anfrage
Wird zum Extrahieren von Rohwerten aus einem Sparql -Endpunkt verwendet, werden die Ergebnisse in einem Tabellenformat zurückgegeben.
KONSTRUIEREN Anfrage
Wird verwendet, um Informationen aus dem Sparql -Endpunkt zu extrahieren und die Ergebnisse in gültige RDF zu verwandeln.
FRAGEN Anfrage
Wird verwendet, um ein einfaches wahres/falsches Ergebnis für eine Abfrage auf einem Sparql -Endpunkt zu liefern.
BESCHREIBEN Anfrage
Wird verwendet, um ein RDF -Diagramm aus dem Sparql -Endpunkt zu extrahieren, dessen Inhalt dem Endpunkt zu entscheiden ist, basierend auf dem, was der Betreuer als nützliche Informationen betrachtet.

Jede dieser Abfrageformen nimmt a WO Blockieren Sie, um die Abfrage einzuschränken, obwohl im Fall der BESCHREIBEN Abfrage, die WO es ist optional.

SPARQL 1.1 Gibt eine Sprache für die Aktualisierung der Datenbank mit mehreren neuen Abfrageberichten an.[13]

Beispiel

Ein weiteres Beispiel für Sparql -Abfragen, das die Frage modelliert: "Was sind alle Länder -Hauptstädte in Afrika?":

PRÄFIX ex:  AUSWÄHLEN ?Hauptstadt  ?Land WO  {  ?x  ex:Stadtname  ?Hauptstadt  ;  ex:iscapitalof  ? y  .  ? y  ex:Ländername  ?Land  ;  ex:Iincontinent  ex:Afrika  .  } 

Variablen werden durch a angezeigt ? oder $ Präfix. Bindungen für ?Hauptstadt und die ?Land Wird zurückgegeben. Wenn ein Dreifach mit einem Semikolon endet, wird das Thema dieses Dreifachs das folgende Paar implizit zu einem ganzen Triple vervollständigen. Also zum Beispiel Ex: iscapitalof? y ist kurz für x ex: iscapitalof? y.

Der SPARQL -Abfrageprozessor sucht nach Dreifachsätzen, die diesen vier Dreifachmustern entsprechen und die Variablen in der Abfrage an die entsprechenden Teile jedes Dreifachs verbinden. Es ist wichtig, hier die "Eigentumsorientierung" zu beachten (Klassenübereinstimmungen können ausschließlich über Klassenattributen oder Eigenschaften durchgeführt werden-siehe Ententypisierung))

Um Abfragen präzise zu machen, ermöglicht Sparql die Definition von Präfixen und Basis URIS in einer ähnlichen Weise wie Schildkröte. In dieser Abfrage das Präfix "ex"steht für" http://example.com/exampleontology# ".

Erweiterungen

Geosparql definiert Filterfunktionen für geographisches Informationssystem (GIS) Abfragen mit gut verstandenen OGC-Standards (GML, Wkt, etc.).

SPARUL ist eine weitere Erweiterung zu Sparql. Mit dieser deklarativen Abfragesprache können der RDF -Store durch Hinzufügen aktualisiert werden EINFÜGUNG und LÖSCHEN Methoden.

Xsparql ist eine integrierte Abfragesprache, die kombiniert wird XQuery mit Sparql, um sowohl XML- als auch RDF -Datenquellen gleichzeitig abzufragen.[14]

Implementierungen

Open Source, Referenz -Sparql -Implementierungen

Sehen Liste der SPARQL -Implementierungen Für umfassendere Berichterstattung, einschließlich Triplestore, Apisund andere Speicher, die den SPARQL -Standard implementiert haben.

Siehe auch

Verweise

  1. ^ a b Hebeler, John; Fisher, Matthew; Blace, Ryan; Perez-Lopez, Andrew (2009). Semantische Webprogrammierung. Indianapolis, Indiana: John Wiley & Sons. p.406. ISBN 978-0-470-41801-7.
  2. ^ Beckett, Dave (6. Oktober 2011). "Wofür steht Sparql?". [email protected].
  3. ^ Jim Rapoza (2. Mai 2006). "Sparql wird das Web leuchten lassen". Eweek. Abgerufen 17. Januar 2007.
  4. ^ Segaran, Toby; Evans, Colin; Taylor, Jamie (2009). Programmieren des semantischen Webs. O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. p. 84. ISBN 978-0-596-15381-6.
  5. ^ "W3C Semantic Web Activity News - Sparql ist eine Empfehlung". W3.org. 15. Januar 2008. Abgerufen 1. Oktober 2009.
  6. ^ "XML und Semantic Web W3C Standards Timeline" (PDF). 4. Februar 2012. Abgerufen 27. November 2013.
  7. ^ "Eleven Sparql 1.1 Spezifikationen sind W3C -Empfehlungen". W3.org. 21. März 2013. Abgerufen 25. April 2013.
  8. ^ "XML und Webdienste in den Nachrichten". xml.org. 6. Oktober 2006. Abgerufen 17. Januar 2007.
  9. ^ "Sparqlimplementations - ESW Wiki". Esw.w3.org. Abgerufen 1. Oktober 2009.
  10. ^ "Viziquer Ein Werkzeug zum Erstellen von Sparql -Abfragen automatisch". lumii.lv. Abgerufen 25. Februar 2011.
  11. ^ "D2R Server". Abgerufen 4. Februar 2012.
  12. ^ "Sparql2XQuery Framework". Abgerufen 4. Februar 2012.
  13. ^ Yu, Liyang (2014). Ein Entwicklerleitfaden zum semantischen Web. Springer. p. 308. ISBN 9783662437964.
  14. ^ "XSparql als W3C -Einreichung veröffentlicht". W3.org. 23. Juni 2009. Abgerufen 22. Mai 2022.

Externe Links