Język zapytań SPARQL. Agnieszka Ławrynowicz. Instytut Informatyki Politechniki Poznańskiej Poznań, 2018

Podobne dokumenty
Język zapytań SPARQL

Język zapytań SPARQL. Agnieszka Ławrynowicz. Instytut Informatyki Politechniki Poznańskiej Poznań, 2014

RDF (Resource Description Framework)

Internet Semantyczny. Podstawy SPARQL

Systemy GIS Tworzenie zapytań w bazach danych

Język RDF. Mikołaj Morzy Agnieszka Ławrynowicz. Instytut Informatyki Poznań, rok akademicki 2013/2014

Wstęp do Technologii Semantycznych SPARQL

SPARQL, Named Graphs, Network Graphs

Na podstawie artykułu:

Przestrzenne bazy danych Podstawy języka SQL

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

SQL (ang. Structured Query Language)

Autor: Joanna Karwowska

Relacyjne bazy danych. Podstawy SQL

Semantic Web. dr inż. Aleksander Smywiński-Pohl. Elektroniczne Przetwarzanie Informacji Konsultacje: czw , pokój 3.211

rdf:type ex:homepage ex:createdwith /amaya rdf:type ex:htmleditor

XML extensible Markup Language 7

Rozszerzenie funkcjonalności systemów wiki w oparciu o wtyczki i Prolog

Autor: Joanna Karwowska

Model semistrukturalny

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Relacyjne bazy danych. Podstawy SQL

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Paweł Rajba

Internet Semantyczny. Schematy RDF i wnioskowanie

Reprezentacja wiedzy ontologie, logiki deskrypcyjne

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Oracle11g: Wprowadzenie do SQL

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Jerzy Nawrocki, Wprowadzenie do informatyki

Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

Technologie Sieci Semantycznych

Dodatkowe możliwości RDF. Seminarium magisterskie Paweł Chrząszczewski

RDF Schema (schematy RDF)

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

3 grudnia Sieć Semantyczna

Konstruowanie Baz Danych DQL agregacja danych

Wprowadzenie do języka SQL

Wykład XII. optymalizacja w relacyjnych bazach danych

Multi-wyszukiwarki. Mediacyjne Systemy Zapytań wprowadzenie. Architektury i technologie integracji danych Systemy Mediacyjne

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

XQuery. sobota, 17 grudnia 11

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Język SQL, zajęcia nr 2

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

OLAP i hurtownie danych c.d.

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Sprawozdanie z laboratorium 2: Modeling knowledge with Resource Description Framework (RDF)

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Od metadanych do map wiedzy

Technologie zarządzania wiedzą. Szymon Zioło.

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

SQL Structured Query Language

Język SQL. Rozdział 2. Proste zapytania

Semantic Web. Grzegorz Olędzki. prezentacja w ramach seminarium Protokoły komunikacyjne. luty 2005

Technologie zarządzania wiedzą

Bazy danych - Materiały do laboratoriów IV

XML w bazie danych IBM DB2

Programowanie Komponentowe WebAPI

Technologie baz danych

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Kurs. Podstawy MySQL

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

XML w bazach danych i bezpieczeństwie

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Podzapytania. Podzapytania nieskorelowane i skorelowane

URL, URI różnice i podobieństwa

Ontologia, wypożyczalnia wideo stworzona na podstawie relacyjnej bazy danych

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

SQL - Structured Query Language. strukturalny język zapytań

Operacja PIVOT w języku SQL w środowisku Oracle

Optymalizacja poleceń SQL Wprowadzenie

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2014/15

Spis treści Informacje podstawowe Predykaty Przykłady Źródła RDF. Marek Prząda. PWSZ w Tarnowie. Tarnów, 6 lutego 2009

Bazy danych SQL Server 2005

Paweł Rajba

Programowanie obiektowe

Grupowanie i funkcje agregujące

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

LAB 3 (część 1 Projektu)

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Wykład 5. SQL praca z tabelami 2

METODY INŻYNIERII WIEDZY ASOCJACYJNA REPREZENTACJA POWIĄZANYCH TABEL I WNIOSKOWANIE IGOR CZAJKOWSKI

Przydatne sztuczki - sql. Na przykładzie postgres a.

Złaczenia tablic: FROM, WHERE, JOIN

Grafowe języki zapytań. Anna Kosieradzka

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Zarządzanie sieciami komputerowymi - wprowadzenie

lata , Oś priorytetowa III: Gospodarka, Innowacyjność, Przedsiębiorczość, Działanie III.3 Rozwój B+R w przedsiębiorstwach.

Transkrypt:

Język zapytań SPARQL Agnieszka Ławrynowicz Instytut Informatyki Politechniki Poznańskiej Poznań, 2018

Język zapytań SPARQL Stos języków Sieci Semantycznej

Turtle Turtle (Terse RDF Triple Language ): serializacja RDF reprezentacja trójkowa trójek <Subject, Predicate, Object> przyjazna dla człowieka alternatywa dla składni RDF/XML często wykorzystywana w przykładach, tutorialach, literaturze

Turtle Turtle (Terse RDF Triple Language ): serializacja RDF reprezentacja trójkowa trójek <Subject, Predicate, Object> przyjazna dla człowieka alternatywa dla składni RDF/XML często wykorzystywana w przykładach, tutorialach, literaturze @prefix osoba: <h>p://przyklad/osoba/>. @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. osoba:a foaf:name "Alicja". osoba:a foaf:mbox <mailto:alicja@example.net>. osoba:b foaf:name "Jan".

SPARQL to SPARQL Protocol And Rdf Query Language - język zapytań Sieci Semantycznej Wymowa: jak sparkle Język zapytań dla danych w formacie RDF Protokół (HTTP, SOAP)

SPARQL pozwala na Zapytania do źródeł danych strukturalnych i semistrukturalnych Eksplorowanie danych przez zadawanie zapytań dotyczących nieznanych związków Wykonywanie złożonych złączeń z różnorodnych baz danych w pojedynczym zapytaniu Transformację danych RDF z jednego słownika do innego

SPARQL główna idea Dopasowywanie wzorców Opisz podgrafy tych grafów RDF, do których wydawane jest zapytanie Podgrafy, które da się dopasować do Twojego opisu konstruują wynik Wzorce grafowe - grafy RDF zawierające zmienne

SPARQL główna idea (przykład) Graf, do którego wydajemy zapytanie: http://.../eyjafjallajökull rdf:type http://.../wulkan p:ostatniaerupcja "2010 rdf:type http://.../wezuwiusz Wyniki: Wzorzec zapytania:?v h\p://.../eyja^allajökull?v rdf:type h\p://.../wezuwiusz http://.../wulkan

Końcówki SPARQL Końcówka SPARQL: na wejściu przyjmuje zapytania na wyjściu zwraca wyniki poprzez HTTP Rodzaje końcówek: Ogólne umożliwiają zadawanie zapytań do dowolnych danych RDF dostępnych przez sieć WWW Dedykowane związane z konkretnymi zbiorami danych

Dostęp do końcówki SPARQL końcówka SPARQL: usługa sieciowa typu REST wydawanie zapytań SPARQL do zdalnej końcówki jest generalnie wydawaniem żądania HTTP GET do tej końcówki z parametrem query (przesyłany tekst zapytania)

Zapytanie SPARQL składa się z Deklaracji prefiksów dla przestrzeni nazw do skracania URI Definicji zbioru danych do wskazania, do którego grafu (grafów) RDF będą wydawane zapytania Klauzuli specyfikującej wynik do identyfikacji, jaką informację zwrócić z zapytania Wzorca zapytania do specyfikacji o co pyta zapytanie wydane do zbioru danych Modyfikatorów zapytania do specyfikacji operatorów np. sortowania wyników i innych sposobów re-aranżacji wyników zapytania

Zapytanie SPARQL składa się z Deklaracja prefiksów Definicja zbioru danych Specyfikacja wyniku Wzorzec zapytania Modyfikator zapytania PREFIX foo: <http://przyklad.org/w1> FROM SELECT WHERE { } ORDER BY

SPARQL wzorzec trójki Wzorzec trójki = Trójka RDF z możliwością występowania w niej (nazwanych) zmiennych @prefix osoba: <h>p://przyklad/osoba/>. @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. osoba:a foaf:name Alicja". osoba:a foaf:mbox <mailto:alicja@example.net>. osoba:b foaf:name Jan". "Hello world" zapytań SPARQL SELECT?imie WHERE {?x foaf:name?imie } ------------- imie ======== Alicja Jan -------------

SPARQL podstawowy wzorzec grafu Podstawowy wzorzec grafu zbiór wzorców trójek, definiuje kształt grafu @prefix osoba: <h>p://przyklad/osoba/>. @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. osoba:a foaf:name Alicja". osoba:a foaf:mbox <mailto:alicja@example.net>. osoba:b foaf:name Jan". PREFIX osoba: <h>p://przyklad/osoba/> PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> SELECT?imie WHERE {?osoba foaf:mbox <mailto:alicja@example.net>.?osoba foaf:name?imie. } ------------- imie ======== Alicja -------------

Wieloznacznik @prefix osoba: <h>p://przyklad/osoba/>. @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. osoba:a foaf:name Alicja". osoba:a foaf:mbox <mailto:alicja@example.net>. osoba:b foaf:name Jan". PREFIX osoba: <h>p://przyklad/osoba/> PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> SELECT * WHERE {?osoba foaf:mbox <mailto:alicja@example.net>.?osoba foaf:name?imie. } ------------------------- osoba imie ============== osoba:a Alicja -------------------------

Rozdzielanie trójek w klauzuli WHERE zapis standardowy a : b c. d : e f. wspólny podmiot a : b c ; : e f. wspólny podmiot i predykat a : b c, f.

Rozdzielanie trójek w klauzuli WHERE - przykład PREFIX osoba: <h>p://przyklad/osoba/> PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> SELECT * WHERE {?osoba foaf:mbox <mailto:alicja@example.net>.?osoba foaf:name?imie. } PREFIX osoba: <h>p://przyklad/osoba/> PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> SELECT * WHERE {?osoba foaf:mbox <mailto:alicja@example.net>, foaf:name?imie. }

Zmienne anonimowe nazwane: głównie różnią się tym od zminennych nieanonimowych tym, że nie są uwzględniane w SELECT * (jednak możliwość odczytania na żądanie) nienazwane oznaczane przez []

SPARQL modyfikatory zapytania Procedury dopasowywania wzorców produkują zbiór rozwiązań. Zbiór rozwiązań może być zmodyfikowany na wiele sposobów: projekcja ORDER BY LIMIT/OFFSET DISTINCT

FILTER @prefix dc: <h>p://purl.org/dc/elements/1.1/>. @prefix magazyn: <h>p://example.org/magazyn#>. @prefix inw: <h>p://example.org/inwentarz#>. magazyn:ksiazka1 dc:rtle "SPARQL Query Language Tutorial". magazyn:ksiazka1 inw:cena 10. magazyn:ksiazka1 inw:ilosc 3. magazyn:ksiazka2 dc:rtle "SPARQL Query Language (2nd ed)". magazyn:ksiazka2 inw:cena 20 ; inw:ilosc 5. magazyn:ksiazka3 dc:rtle "Moving from SQL ---------------------------------------------------------------------------- to SPARQL". magazyn:ksiazka3 inw:cena 5 ; inw:ilosc 0. ksiazka tytul ================================================== magazyn:ksiazka4 dc:rtle "Applying XQuery" magazyn:ksiazka1. "SPARQL Query Language Tutorial" magazyn:ksiazka4 inw:cena 20 ; inw:ilosc 8. PREFIX dc: <h>p://purl.org/dc/elements/1.1/> PREFIX magazyn: <h>p://example.org/magazyn#> PREFIX inw: <h>p://example.org/inwentarz#> SELECT?ksiazka?tytul WHERE {?ksiazka dc:rtle?tytul.?ksiazka inw:cena?cena. FILTER (?cena < 15 )?ksiazka (c) Mikołaj inw:ilosc Morzy,?ilosc Agnieszka. FILTER (?ilosc Ławrynowicz, > 0 ) } Instytut Informatyki Politechniki Poznańskiej

FILTER - wbudowane funkcje Logiczne:!, &&, Arytmetyczne: +, -, *, / Porównania: =,!=, >, <,... Testy SPARQL: isuri, isblank, isliteral, bound Akcesory SPARQL: str, lang, datatype Inne: sameterm, langmatches, regex

OPTIONAL @prefix osoba: <h>p://przyklad/osoba/>. @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. osoba:a foaf:name "Alicja". osoba:a foaf:nick "A-online". osoba:b foaf:name "Jan". PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> SELECT?imie?nick {?x foaf:name?imie. OPTIONAL {?x foaf:nick?nick } } ------------------------ imie nick ======================== "Alicja" "A-online" " Jan" ------------------------

UNION @prefix ksiazka: <h>p://przyklad/ksiazka/>. @prefix dc10: <h>p://purl.org/dc/elements/1.0/>. @prefix dc11: <h>p://purl.org/dc/elements/1.1/>. ksiazka:a dc10:rtle "SPARQL Query Language Tutorial". ksiazka:b dc11:rtle "SPARQL Query Language (2nd ed)". ksiazka:c dc10:rtle "SPARQL". ksiazka:c dc11:rtle "SPARQL". PREFIX dc10: <h>p://purl.org/dc/elements/1.0/> PREFIX dc11: <h>p://purl.org/dc/elements/1.1/> SELECT DISTINCT?tytul { {?ksiazka dc10:rtle?tytul } UNION {?ksiazka dc11:rtle?tytul } } ------------------------------------ tytul ================================= "SPARQL Query Language Tutorial" "SPARQL" "SPARQL Query Language (2nd ed)" ------------------------------------

Źródła danych - zapytania SPARQL są wykonywane do zbiorów danych RDF, składających się z grafów RDF - jak dotąd zapytania wydawane do domyślnego grafu - zbiory danych RDF składają się z domyślnego grafu i zero lub więcej nazwanych grafów, identyfikowanych przez URI - Nazwane grafy: specyfikowane poprzez klauzule FROM NAMED, lub zaszyte w danej końcówce SPARQL - GRAPH: pozwala porcjom zapytania dopasować się do nazwanych grafów w zbiorze RDF, wszystko poza klauzulą GRAPH dopasowanie do domyślnego grafu

Klauzula FROM - przykład @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. _:a foaf:name "Alicja". _:a foaf:mbox <mailto:alicja@work.example>. PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> SELECT?imie FROM <h>p://przyklad.org/foaf/alicjafoaf> WHERE {?x foaf:name?imie }

Formaty zapytań i odpowiedzi SPARQL SELECT zwraca tablicę wyników (wszystkie lub podzbiór zmiennych związanych podczas dopasowywania wzorca zapytania) ASK zwraca wartość logiczną wskazującą na to czy wzorzec zapytania znajduje dopasowanie czy nie DESCRIBE zwraca graf RDF, który opisuje strukturę znalezionych zasobów (w sposób zależny od konfiguracji danego procesora niespodzianka ) CONSTRUCT zwraca graf RDF skonstruowany poprzez podstawienie zmiennych w zbiorze szablonów trójek (translacja pomiędzy różnymi grafami RDF)

ASK @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. _:a foaf:name Alicja". _:a foaf:homepage <h>p://work.example.org/alicja/>. _:b foaf:name " Jan". _:b foaf:mbox <mailto:bob@work.example>. Yes PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> ASK {?x foaf:name Alicja" } <?xml version="1.0"?> <sparql xmlns="h>p://www.w3.org/2005/sparql-results#"> <head> </head> <results> <boolean>true</boolean> </results> </sparql>

DESCRIBE PREFIX ksiazki: <h>p://przyklad.org/ksiazka/> PREFIX dc: <h>p://purl.org/dc/elements/1.1/> DESCRIBE?ksiazka WHERE {?ksiazka dc:rtle "Harry Po>er i więzień Azkabanu" } <rdf:rdf> <rdf:descripron rdf:about="h>p://przyklad.org/ksiazka/ksiazka3"> <dc:creator rdf:parsetype="resource"> <vcard:n rdf:parsetype="resource"> <vcard:given>joanna</vcard:given> <vcard:family>rowling</vcard:family> </vcard:n> <vcard:fn>j.k. Rowling</vcard:FN> </dc:creator> <dc:rtle>harry Po>er i więzień Azkabanu</dc:rtle> </rdf:descripron> </rdf:rdf>

@prefix osoba: <h>p://przyklad/osoba/>. @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. osoba:a foaf:name "Alicja". osoba:a foaf:mbox <mailto:alicja@example.net>. osoba:b foaf:name " Jan". CONSTRUCT PREFIX osoba: <h>p://przyklad/osoba/> PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> PREFIX vcard: <h>p://www.w3.org/2001/vcard-rdf/3.0#> CONSTRUCT {?osoba vcard:fn?imie } WHERE {?osoba foaf:name?imie. } @prefix osoba: <h>p://przyklad/osoba/>. @prefix vcard: <h>p://www.w3.org/2001/vcard-rdf/3.0#> osoba:a vcard:fn "Alicja". osoba:b vcard:fn "Jan". 2008-12-10

SPARQL 1.0 a SPARQL 1.1 SPARQL 1.0 styczeń 2008 SPARQL 1.0 język zapytań SPARQL 1.0 protokół SPARQL format XML wyników SPARQL 1.1 listopad 2012 Zaktualizowane wersje SPARQL Query i SPARQL Protocol SPARQL 1.1 Update SPARQL 1.1 jednolity protokół HTTP do zarządzania grafami RDF SPARQL 1.1 opisy usług SPARQL 1.1 wnioskowanie SPARQL 1.1 zapytania sfederowane

SPARQL 1.1 Wyrażenia w liście SELECT - wyniki zawierające wartości wyprowadzone ze stałych, wywołań funkcji lub innych wyrażeń Ścieżki własności zapytania o dowolnej długości ścieżki w grafie poprzez wyrażenia regularne Agregacja grupowanie wyników i obliczanie zagregowanych wartości (np. count, min, max, avg, sum,...). Podzapytania zapytania w zapytaniu Zapytania sfederowane - rozdzielanie pojedynczego zapytania do wielu końcówek SPARQL i następnie łączenie wyników Negacja a) filtrowanie wyników zależne od dopasowania wzorca grafu w kontekście znalezionych wyników b) usuwanie wyników będących w relacji z innym wzorcem Wnioskowanie (Entailment Regimes) RDFS, OWL, reguły

Wyrażenia w liście SELECT @prefix foaf: <h>p://xmlns.com/foaf/0.1/>. _:a foaf:givenname "Jan". _:a foaf:surname Kowalski". ------------------------ imie_nazw ======================== Jan Kowalski" ------------------------ PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> SELECT ( fn:concat(?g, " ",?S) AS?imie_nazw ) WHERE {?P foaf:givenname?g ; foaf:surname?s }

Ścieżki własności Dopasuj jedną lub drugą możliwość: { :ksiazka1 dc:ztle rdfs:label?lancuch } Znajdź imię jakiejkolwiek osoby, którą zna Alicja {?x foaf:mbox <mailto:alicja@przyklad>.?x foaf:knows/foaf:name?imie. } Imiona ludzi w odległości 2 linków "foaf:knows" {?x foaf:mbox <mailto:alicja@przyklad>.?x foaf:knows/foaf:knows/ foaf:name?imie. } {?x foaf:mbox <mailto:alicja@przyklad>.?x foaf:knows{2}/foaf:name?imie. } Dowolna długość ścieżki imiona wszystkich ludzi, których URI można osiągnąć startując z foaf:knows Alicji: {?x foaf:mbox <mailto:alicja@przyklad>.?x foaf:knows+/foaf:name?imie. }

Agregacja @prefix : <h>p://ksiazki.przyklad/>. :org1 :afiliuje :aut1, :aut2. :aut1 :piszeksiazke :ksiazka1, : ksiazka2. :ksiazka1 :cena 9. :ksiazka2 :cena 5. :aut2 :piszeksiazke :ksiazka3. :ksiazka3 :cena 7. :org2 :afiliuje :aut3. :aut3 :piszeksiazke :ksiazka4. :ksiazka4 :cena 7. PREFIX : <h>p://ksiazki.przyklad/> SELECT (SUM(?lcena) AS?total) WHERE {?org :afiliuje?aut.?aut :piszeksiazke?ksiazka.?ksiazka :cena?lcena. } GROUP BY?org HAVING (SUM(?lcena) > 10) ------------------------?total ======================== 21 ------------------------

@prefix : <h>p://people.example/>. Podzapytania :alicja :name "Alicja", "Alicja Foo", "A. Foo". :alicja :knows :jan, :karol. :jan :name Jan", Jan Bar", J. Bar". :karol :name Karol", Karol Baz", K. Baz". PREFIX : <h>p://people.example/> SELECT?y?minImie WHERE { :alicja :knows?y. { SELECT?y (MIN(?imie) AS?minImie) WHERE {?y :name?imie. } GROUP BY?y } } ---------------------------------------?y?minimie ======================== :jan J. Bar :karol K. Baz ---------------------------------------

@prefix foaf: <h>p://xmlns.com/foaf/0.1/>. @prefix : <h>p://example.org/>. :people15 foaf:name "Alice". :people16 foaf:name "Bob". :people17 foaf:name "Charles". :people18 foaf:name "Daisy". Zapytania sfederowane Końcówka SPARQL: h\p://people.example.org/sparql Lokalny plik FOAF: h\p://example.org/myfoaf.rdf ------------------------ <h>p://example.org/myfoaf/i> <h>p://xmlns.com/foaf/0.1/knows>?name <h>p://example.org/people15>. =============== PREFIX foaf: <h>p://xmlns.com/foaf/0.1/> Alice SELECT?name ------------------------ FROM <h>p://example.org/myfoaf.rdf> WHERE { <h>p://example.org/myfoaf/i> foaf:knows?person. SERVICE <h>p://people.example.org/sparql> {?person foaf:name?name. } }

Wnioskowanie @prefix ex: <h>p://publicarons.example/>. ex:book1 rdf:type ex:publicaron. ex:book2 rdf:type ex:arrcle. ex:arrcle rdfs:subclassof ex:publicaron. ex:publishes rdfs:range ex:publicaron. ex:mitpress ex:publishes ex:book3. @prefix ex: <h>p://publicarons.example/>. SELECT?pub WHERE {?pub rdf:type ex:publicaron } ----------------?pub ========== ex:book1 ---------------- RDF-entailment ----------------?pub ========== ex:book1 ex:book2 ex:book3 ---------------- RDFS-entailment

Silniki zapytań/repozytoria trójek Jena AllegroGraph Sesame OpenLink Virtuoso Blazegraph

Repozytoria trójek Specjalizowana baza danych do przechowywania trójek RDF Trójki wprowadzane w różnych formatach Wspiera język zapytań do RDF SPARQL (rekomendacja W3C) Inne języki (np. ARQ, RDQL) Może, ale nie musi wykonywać wnioskowanie

Architektury Implementacja: In-memory, Natywna, Nienatywna Natywna: JENA TDB, Sesame Native, Virtuoso, AllegroGraph, Oracle 11g Nie-Natywna: Np. Używająca RDBMS jako backend

Materiały: SPARQL specificazon document, h\p://www.w3.org/tr/rdf-sparql-query/ SPARQL By Example, A Tutorial, Lee Feigenbaum, h\p://www.cambridgesemanzcs.com/semanzc-university/sparql-by-example Querying semanzc data : h\p://www.linkeddatatools.com/querying-semanzc-data

Quads i Grafy Nazwane (Named Graphs) Wiele repozytoriów trójek wspiera czwórki (quads) dla nazwanych grafów (named graphs) A named graph is just an RDF with a URI name o en called the context Such a triple store divides its data a default graph and zero or more addizonal named graphs SPARQL has support for named graphs De facto standards exist for represenzng quad data, e.g., n-quads and TriG (a turtle/n3 variant) AllegroGraph stores quints (S,P,O,C,ID), the ID can be used to a\ach metadata to a triple