Перайсці да зместу

SPARQL

З Вікіпедыі, свабоднай энцыклапедыі
SPARQL
З’явілася ў 15 студзеня 2008
Сайт w3.org/TR/sparql1… (англ.)

SPARQL (рэкурсіўны акронім ад англ.: SPARQL Protocol and RDF Query Language) — мова запытаў да дадзеных, прадстаўленая па мадэлі RDF, а таксама пратакол для перадачы гэтых запытаў і адказаў на іх. SPARQL з’яўляецца рэкамендацыяй кансорцыума W3C[1] і адной з тэхналогій семантычнага павуціння[2][3]. Прадастаўленне SPARQL-кропак доступу (англ.: SPARQL-endpoint) з’яўляецца рэкамендаванай практыкай пры публікацыі даных у сусветным павуцінні[4].

Агульная схема запыту

[правіць | правіць зыходнік]

Як і ў SQL, SPARQL дэкларуе не толькі чытанне, але і маніпуляцыю данымі. Стандарт SPARQL Update апісвае каманды INSERT і DELETE для дадання і выдаленні трыплетаў у сховішча. Аднак, абедзве гэтыя каманды аперуюць той ці іншай выбаркай, так што аснова SPARQL — гэта каманда SELECT.

Агульная схема SPARQL-запыту SELECT выглядае так[5]:

PREFIX 
# прэфіксныя аб’явы - служаць для ўказання скарачэнняў URI, 
# якія выкарыстоўваюцца ў запыце.
FROM ... 
# крыніцы запыту - вызначаюць якія RDF-графы запытваюцца.
SELECT ... 
# склад выніку - вызначае элементы даных, якія вяртаюцца.
WHERE {...} 
# шаблон запыту - вызначае, што запытваць з набору даных.
ORDER BY ... 
# мадыфікатары запыту - абмяжоўваюць, парадкуюць, пераўтвораць вынікі запыту.

SPARQL дазваляе карыстальнікам пісаць глабальна адназначныя запыты. Напрыклад, наступны запыт вяртае імёны і адрасы электроннай пошты кожнага чалавека ў свеце:

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

Прыведзеныя параметры выкарыстоўваюцца для апісання чалавека, уключанага ў FOAF . Гэта ілюструе бачанне Семантычнага павуціння як адзінай вялізнай базы даных[6]. Кожны ідэнтыфікатар у SPARQL, URI, глабальна адназначны, у адрозненне ад «email» ці «e-mail», якія звычайна выкарыстоўваюцца ў SQL.

Гэты запыт можа быць размеркаваны на некалькі канчатковых кропак SPARQL, розных камп’ютараў, і збор вынікаў ажыццяўляецца працэдурай, вядомай як федэратыўны пошук. .

Формы запытаў

[правіць | правіць зыходнік]

Мова SPARQL вызначае чатыры розныя варыянты запытаў для розных мэт:

SELECT запыт

Здабывае неапрацаваныя значэнні з кропкі доступу SPARQL і вяртае вынікі ў фармаце табліцы.

CONSTRUCT запыт

Вымае інфармацыю з кропкі доступу SPARQL у фармаце RDF і пераўтварае вынікі да вызначанай формы.

ASK запыт

Фармуе запыт тыпу Ісціна/Хлусня.

DESCRIBE запыт

Атрымлівае апісанне RDF-рэсурсу. Рэалізацыя паводзін DESCRIBE-запытаў вызначаецца распрацоўшчыкам пункту доступу SPARQL.

Кожная з гэтых формаў запыту змяшчае блок WHERE для ўказання абмежаванняў, хаця ў выпадку запыту DESCRIBE гэты блок не з’яўляецца абавязковым.

Ключавыя словы

[правіць | правіць зыходнік]

Ніжэй прыведзена частка выкарыстоўваных ключавых слоў у SPARQL запытах, поўны пералік даступны ў афіцыйнай дакументацыі.

PREFIX — служыць для скарачэння URI.

OPTIONAL — пазначае неабавязковы шаблон.

GRAPH — ужывае шаблон да найменных графаў.

DISTINCT — забяспечвае унікальнасць рашэнняў у адказе на запыт.

LIMIT — задае максімальную колькасць выводных вынікаў.

OFFSET — апускае ў выніку першыя n рашэнняў.

ORDER BY — дазваляе адсартаваць вынік па ўзрастанні (ASC()) або па змяншэнні (DESC())[7]. .

Параўнанне моў запытаў да RDF

[правіць | правіць зыходнік]
  • DQL — заснаваны на XML, запыты і вынікі адлюстроўваюцца ў DAML+OIL;
  • N3QL — заснаваны на Натацыі 3;
  • R-DEVICE;
  • RDFQ — заснаваны на XML;
  • RDQ — падобны на SQL;
  • RDQL — падобны на SQL;
  • SeRQL — падобны на SQL, блізкі да RDQL;
  • Versa — кампактны сінтаксіс (не SQL), выключна для 4Suite (мова Python).

SPARQL 1.0 стаў стандартам у студзені 2008 і ўключаў:

SPARQL 1.0 Мова запытаў;
SPARQL 1.0 Пратакол;
SPARQL Фармат вынікаў XML.

SPARQL 1.1 з’яўляецца актуальнай версіяй і ўключае:

SPARQL мова запытаў і пратакол абноўлены да 1.1;
SPARQL 1.1 Абнаўленні;
SPARQL 1.1 HTTP-пратакол для кіравання RDF графамі;
SPARQL 1.1 Апісанні службаў;
SPARQL 1.1 Лагічныя следствы (Entailments);
SPARQL 1.1 Асноўныя Федэратыўныя запыты[8].

Іншы прыклад запытаў SPARQL: «Знайсці даты выхаду серый усіх сезонаў серыяла „Клан Сапрана“»:

 PREFIX dbpo: <http://dbpedia.org/ontology/>
 SELECT *
 WHERE
 {
 ?e dbpo:series     <http://dbpedia.org/resource/The_Sopranos>.
 ?e dbpo:releaseDate  ?date.
 ?e dbpo:episodeNumber ?number.
 ?e dbpo:seasonNumber  ?season.
 }
 ORDER BY DESC(?date)

Пераменныя абазначаюцца прэфіксам «?» або «$».

Каб зрабіць запыты кароткімі, SPARQL дазваляе вызначаць прэфіксы і асноўныя URI спосабам, падобным Turtle. У гэтым запыце прэфікс «dbpo» абазначае "http://dbpedia.org/ontology/».

Кропка доступу SPARQL

[правіць | правіць зыходнік]

Кропка доступу SPARQL — гэта служба, якая падтрымлівае пратакол запытаў SPARQL. Кропка доступу дазваляе карыстачу рабіць запыты да базы ведаў. Сервер апрацоўвае запыт і вяртае адказ у некаторым, звычайна машыначытальным, фармаце. Такім чынам, кропкі доступу SPARQL у першую чаргу з’яўляюцца API да баз ведаў, а прадстаўленне вынікаў павінна быць рэалізавана праграмным забеспячэннем выклікальнага боку[9].

Адрозніваюць два выглядs кропак доступу: агульнага прызначэння і лакальныя.

Пункты доступу агульнага прызначэння могуць рабіць запыты па любых названых RDF-дакументах, якія знаходзяцца ў Сетцы. А лакальныя кропкі доступу здольныя атрымліваць даныя толькі ад аднаго рэсурса.

Аўтаматычнае выкананне запытаў

[правіць | правіць зыходнік]

На дадзены момант для шэрагу моў праграмавання існуе магчымасць выклікаць SPARQL-запыты[10], існуюць прылады, якія дазваляюць падлучаць і ў паўаўтаматычным рэжыме будаваць SPARQL-запыты для кропкі доступу SPARQL, напрыклад ViziQuer[11].

  1. ↑ Semantic Web Activity News (англ.)(недаступная спасылка). Архівавана з першакрыніцы 2 чэрвеня 2012. Праверана 10 чэрвеня 2011.
  2. ↑ W3C Semantic Web Activity Publications (англ.)(недаступная спасылка). W3C. Архівавана з першакрыніцы 2 чэрвеня 2012. Праверана 23 лістапада 2009.
  3. ↑ Berners-Lee looks for Web's big leap (англ.)(недаступная спасылка). Архівавана з першакрыніцы 30 верасня 2007. Праверана 10 чэрвеня 2011.
  4. ↑ Tim Berners-Lee. Linked Data. Design Issues. (англ.)(недаступная спасылка). Архівавана з першакрыніцы 2 чэрвеня 2012. Праверана 14 чэрвеня 2011.
  5. ↑ Structure of a SPARQL Query (англ.)(недаступная спасылка). Архівавана з першакрыніцы 11 лютага 2012. Праверана 10 чэрвеня 2011.
  6. ↑ {{{загаловак}}}. — 1998. Архівавана з першакрыніцы 12 жніўня 2011.
  7. ↑ SPARQL Query Language for RDF (англ.)(недаступная спасылка). Архівавана з першакрыніцы 2 чэрвеня 2012. Праверана 28 чэрвеня 2011.
  8. ↑ SPARQL by example (англ.)(недаступная спасылка). Архівавана з першакрыніцы 11 лютага 2012. Праверана 28 чэрвеня 2011.
  9. ↑ SPARQL-endpoint(недаступная спасылка). Архівавана з першакрыніцы 7 ліпеня 2011. Праверана 24 чэрвеня 2011.
  10. ↑ SPARQL Implementation Coverage Report (англ.)(недаступная спасылка). Архівавана з першакрыніцы 2 чэрвеня 2012. Праверана 23 лістапада 2009.
  11. ↑ ViziQuer (англ.)(недаступная спасылка). Архівавана з першакрыніцы 2 чэрвеня 2012. Праверана 10 чэрвеня 2011.