SPARQL

RDF-alapú lekérdezőnyelv gráfadatbázisokhoz
(Sparql szócikkből átirányítva)

A SPARQL (SPARQL Protocol and RDF Query Language) egy RDF lekérdezőnyelv, melynek segítségével különféle adatbázisokhoz adhatunk meg lekérdezéseket. A SPARQL segítségével Resource Description Framework formátumban tárolt adatokat módosíthatunk, és nyerhetünk ki az adatbázisból.[1][2] A World Wide Web Consortium RDF Data Access Working Group (DAWG) csoportja által nyílt szoftver szabvánnyá vált, és azóta a szemantikus adatbázisok kezelésének egyik legfontosabb technológiájaként tartják számon. 2008. január 15-én a SPARQL 1.0 hivatalos W3C ajánlássá vált.[3][4]

A SPARQL lekérdezések triple mintákból, konjunkciókból, diszjunkciókból és opcionális mintákból állnak.[5] Implementációk többféle programozási nyelvre is léteznek.[6] Sir Tim Berners-Lee egy 2006 májusában adott interjújában kijelentette, hogy a SPARQL használata hatalmas változásokat fog hozni az érintett programozási területek fejlődésében.[7]

Számos eszköz létezik, melyek segítségével megkönnyíthetjük, illetve félig automatizálhatjuk a SPARQL lekérdezések létrehozását, ezek közül az egyik legismertebb a ViziQuer.[8] Továbbá olyan eszközök is rendelkezésre állnak, melyek SPARQL lekérdezéseket más lekérdező nyelvekre, pl SQL-re, vagy XQuery-re fordítanak le.[9][10]

Előnyök szerkesztés

A SPARQL használatával a felhasználó egyértelmű lekérdezéseket adhat meg. Például az alábbi lekérdezés megadja az adatbázisban szereplő összes személy nevét és e-mail címét:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?email
WHERE {
  ?person a foaf:Person.
  ?person foaf:name ?name.
  ?person foaf:mbox ?email.
}

Ez a lekérdezés szétosztható több SPARQL végponthoz (szolgáltatások, melyek fogadják SPARQL lekérdezéseket és eredményt adnak vissza), kiszámolja és összegyűjti az eredményt. A eljárást federációs lekérdezésnek hívják.

A lekérdezések típusai szerkesztés

A SPARQL nyelv négy különböző célra használható lekérdezés típust specifikál.

SELECT query
SPARQL végpontokból kinyerhető nyers adatok elérésére szolgál. Az eredményeket táblázatos formában adja meg.
CONSTRUCT query
SPARQL végpontokból kinyerhető adatok elérésére, és a kapott eredmények érvényes RDF formátumba történő átalakítására használjuk.
ASK query
Egyszerű Igaz/Hamis eredményt ad meg egy SPARQL végponton végrehajtott lekérdezéshez.
DESCRIBE query
Egy SPARQL végponthoz tartozó RDF diagramot állít elő, amely az egyes végpontok hasznosságát adja meg a tartalmazott információt tekintve.

A fenti lekérdezéseket egy WHERE blokkban adhatjuk meg, a DESCRIBE query esetében a WHERE használata opcionális.

Példa szerkesztés

A példaként megadott SPARQL lekérdezés a "Melyek Európa fővárosai?" kérdést modellezi:

#defaultView:Map
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT ?capital ?capitalLabel ?coor WHERE {
  ?capital wdt:P31 wd:Q5119.
  ?capital ?range wd:Q46.
  ?capital wdt:P625 ?coor.
  ?capital rdfs:label ?capitalLabel.
  FILTER((LANG(?capitalLabel)) = "hu")
}

Próbáld ki!

A query a Wikidata SPARQL végpontját használja. Természetesen csak azokat a fővárosokat találja meg amelyek predikátumai között szerepel Európa mint kontinens és az utolsó sorban megadott filter szerint a Wikidatában létezik az adott főváros magyar nyelvű megnevezése.

Az egyes változókat a "?" vagy a "$" perfixekkel jelöljük. A program ?capital és a ?coor változókhoz tartozó értékeket adja vissza. Ebben az esetben a SPARQL feldolgozó olyan eredményhalmazokat fog keresni, amelyek megfelelnek a megadott négy mintának.

A SPARQL lekérdezést feldolgozó program a állítások (hármasok) halmazán megkeresi azokat az állításokat, amelyek illeszkednek erre a négy mintára, összekötve a lekérdezésben a változókat minden egyes állítás megfelelő részével. Fontos megjegyezni, hogy itt "tulajdonság orientáltságról" beszélünk (az osztály illeszkedések kizárólag az osztály-attribútumokon v. tulajdonságokon keresztül kapcsolódnak össze - lásd a Duck typing(wd).

Azért, hogy a lekérdezések elég tömörek legyenek SPARQL megengedi a prefixek és alap URIk definiálását hasonló stílusban, mint a tuple-ok.

SPARQL/Update szerkesztés

A SPARUL, vagy SPARQL/Update, a SPARQL egy kiterjesztése, amely tiple tárolóban tárolt RDF adatokhoz biztosítja a hozzáadás, módosítás, és törlés műveleteket.

SPARQL implementációk szerkesztés

Ez a lista bemutatja a triplestore-okat, APIkat és egyéb tárolókat, amelyek már implementálták a SPARQL lekérdező nyelvet.

  • 4store
  • AllegroGraph
  • ARC2
  • ARQ
  • BigData
  • BrightstarDB
  • Corese
  • D2R Server
  • Dydra
  • Hercules
  • Intellidimension Semantics Platform 2.0
  • Jena
  • KAON2
  • Knowledge Explorer
  • Mulgara
  • OntoBroker
  • Ontotext OWLIM
  • Open Anzo
  • OpenLink Virtuoso
  • Oracle DB Enterprise Ed.
  • Parliament
  • Pellet
  • RAP
  • RDF API for PHP
  • RDF-3X
  • RDF::Query
  • Redland / Redstore
  • SPARQL Engine
  • SemWeb.NET
  • Sesame 2
  • Stardog
  • StrixDB
  • Twinql
  • Web Query
  • IBM DB2[11]

Jegyzetek szerkesztés

  1. Jim Rapoza: SPARQL Will Make the Web Shine. eWeek, 2006. május 2. (Hozzáférés: 2007. január 17.)[halott link]
  2. Programming the Semantic Web (angol nyelven). O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472, 84. o. (2009). ISBN 978-0-596-15381-6 
  3. W3C Semantic Web Activity News - SPARQL is a Recommendation. W3.org, 2008. január 15. [2008. január 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. október 1.)
  4. XML and Semantic Web W3C Standards Timeline, 2012. február 4. [2013. április 24-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 20.)
  5. XML and Web Services In The News. xml.org, 2006. október 6. (Hozzáférés: 2007. január 17.)
  6. SparqlImplementations - ESW Wiki. Esw.w3.org. (Hozzáférés: 2009. október 1.)
  7. Reuters. „Berners-Lee looks for Web's big leap”, zdnet.co.uk, 2006. május 22.. [2007. szeptember 30-i dátummal az eredetiből archiválva] (Hozzáférés ideje: 2007. január 17.) 
  8. ViziQuer a tool to construct SPARQL queries automaticly. lumii.lv. (Hozzáférés: 2011. február 25.)
  9. D2R Server. [2012. február 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. február 4.)
  10. SPARQL2XQuery Framework. [2013. május 12-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. február 4.)
  11. NoSQL Graph Store, 2012. április 27.[halott link]

További információk szerkesztés

Fordítás szerkesztés

  • Ez a szócikk részben vagy egészben a SPARQL című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.