RDF API a SPARQL syntaxe, API, příklady. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name



Podobné dokumenty
SPARQL teorie, endpointy, pojmenované grafy, web API. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák

Jak číst a psát RDF. Reprezentace a zpracování znalostí na WWW, Jindřich Mynarz

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16

RDF serializace Turtle

Linked Data a jazyk RDF

SPARQL.

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky

1. Téma 12 - Textové soubory a výjimky

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Java a XML. 10/26/09 1/7 Java a XML

Linked Data a jazyk RDF

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Scraping script version 2 (CS)

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

RMI Remote Method Invocation

SPARQL Query Language for RDF Motivace Syntax

Úvod do programování - Java. Cvičení č.4

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

Webové služby a XML. Miroslav Beneš

Sémantický Web SPARQL

Pokročilé Webové služby a Caché security. Š. Havlíček

dbpedia Václav Zeman December 2015 KIZI - VŠE

obr. 2 - Dv vrstvy map témat; Zdroj: [15]

Michal Krátký, Miroslav Beneš

Algoritmizace a programování

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Automatizovatelná aktualizace Wikidata z veřejných databází. Jakub Klímek

Tvorba informačních systémů

Tvorba informačních systémů

Webová prezentační aplikace

LINKED DATA, OPEN DATA a BIG DATA

Úvod do programovacích jazyků (Java)

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

UJO Framework. revoluční architektura beans. verze

WWW jako dynamická knihovna

Algoritmizace a programování

4IZ440 Propojená data na webu Organizační úvod

Dotazování nad stromem abstraktní syntaxe

NÁSTROJE SÉMANTICKÉHO WEBU A VĚCNÉ AUTORITY APLIKACE V PROJEKTU INTERPI

Bakalářská práce Převodník Excel - OWL

Sémantický web 10 let poté

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Co jsou otevřená propojená data?

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Distribuované systémy a výpočty

Distribuované systémy a výpočty

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

Řídicí struktury. alg3 1

Sémantický web principy, prostředky, aplikace. Ondřej Černoš UISK

Principy a praktické využití otevřených dat

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Databázové a informační systémy

Databázové systémy. Dáta v grafe dáta na webe

KTE / ZPE Informační technologie

bibliografických dat - Má MARC

Příloha E.6. Záznam metadat ve schématu Dublin Core ve struktuře Resource Description Framework

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Použití databází na Webu

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. z ontologií

InternetovéTechnologie

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Vývoj Internetových Aplikací

Programování v Javě I. Únor 2009

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice

Paměť počítače. alg2 1

Datové struktury. alg12 1

Diplomová práce Automatizovaná analýza medicínských dat

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Viroce 2004 měl vyhledávač Google

Programování v jazyce JavaScript

Základy PHP. Úvod do jazyka PHP a principů skriptování na straně serveru

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Webové služby. Martin Sochor

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Sémantika ve webových stránkách

Programování v Javě I. Leden 2008

Zápis programu v jazyce C#

boolean hasnext() Object next() void remove() Kolekce

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Příkazy a řídicí struktury v Javě. Tomáš Pitner, upravil Marek Šabo

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Oracle XML DB. Tomáš Nykodým

Doxygen. Jakub Břečka

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003

Úvod do aplikací internetu a přehled možností při tvorbě webu

Příkaz while. while (podmínka) { příkaz; } Příklad: int i=0; while (i < 10) { System.out.println(i); i++; } // vypíše čísla od 0 do 9

Web Services na SOAP

XML a nové trendy v publikování na Webu

7. Dynamické datové struktury

Textové soubory. alg9 1

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

SPARQL Sémantika. Peter Vojtáš

Transkript:

RDF API a SPARQL syntaxe, API, příklady 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name

Dnes uvidíme Syntaxe RDF Základy RDF grafu Pojmenované grafy Přehled RDF API Příklady z Jena frameworku Jazyk SPARQL

Syntaxe RDF RDF má více syntaxí. Referenční syntaxí je graf i ve formě obrazu. Oficiální syntaxí dle W3C je RDF/XML. Ostatní: N-Triples N3 RDF/JSON RDFa

RDF graf rdf:type v:person v:org v:name v:role v:url Příkladná a.s. Jan Vzorový vzorový zaměstnanec http://priklad.cz/ PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX v: <http://rdf.data-vocabulary.org/#>

N3 Notation @prefix v: <http://rdf.data-vocabulary.org/#>. [] a v:person; v:name Jan Vzorový ; v:org Příkladná s.r.o. ; v:role vzorový zaměstnanec ; v:url <http://priklad.cz/>.

RDF/XML (zkrácený zápis) <?xml version="1.0" encoding="utf-8"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntaxns#" xmlns:v="http://rdf.data-vocabulary.org/#"> <v:person> <v:name>jan Vzorový</v:name> <v:role>vzorovýzaměstnanec</v:role> <v:org>příkladná a.s.</v:org> <v:url rdf:resource="http://priklad.cz/"/> </v:person> </rdf:rdf>

N-Triples _:a <http://www.w3.org/1999/02/22-rdf-syntaxns#type> <http://rdf.data-vocabulary.org/#person>. _:a <http://rdf.data-vocabulary.org/#role> "vzorový zaměstnanec". _:a <http://rdf.data-vocabulary.org/#org> "Příkladná s.r.o.". _:a <http://rdf.data-vocabulary.org/#name> "Jan Vzorový". _:a <http://rdf.data-vocabulary.org/#url> <http://priklad.cz/>.

RDF/JSON { } _:a : { http://www.w3.org/1999/02/22-rdf-syntax-ns# : [ { value : http://rdf.data-vocabulary.org/#person, type : uri } ], http://rdf.data-vocabulary.org/#name : [ { value : John Example, type : literal } ], http://rdf.data-vocabulary.org/#affiliation : [ { value : Sample Corp. Inc., type : literal } ] }

HTML5 + RDFa <!DOCTYPE html> <html prefix="v: http://rdf.data-vocabulary.org/#"> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>osobní stránka</title> </head> <body> <h1>osobní stránka</h1> <p typeof="v:person"> Jmenuji se <em property="v:name">jan Vzorový</em> a pracuji v <em property="v:role">vzorový zaměstnanec</em> pro společnost <em property="v:org">příkladná a.s.</em>. Moje osobní stránka: <a href="http://priklad.cz/" rel="v:url">priklad.cz</a>. </p> </body> </html>

Pojmenovaný graf Named graph (tzv. pojmenovaný graf) Má přiřazenou URI Účel? Určení původu trojic Čtveřice?g?s?p?o. TriG rozšiřuje Turtle syntaxi o pojmenování grafu <http://uri.meho.grafu/> { } [vlastní RDF graf]

Zdroje o RDF formátech RDF/XML http://www.w3.org/tr/rdf-syntax-grammar/ N3 Notation http://www.w3.org/designissues/notation3 http://www.w3.org/2000/10/swap/primer N Triples http://www.w3.org/tr/rdf-testcases/#ntriples RDF/JSON http://n2.talis.com/wiki/rdf_json_specification RDFa http://www.w3.org/tr/rdfa-syntax/ http://www.w3.org/tr/xhtml-rdfa-primer/

RDF API

Java Jena http://openjena.org/ http://sourceforge.net/projects/jena/ Sesame http://www.openrdf.org/ Shellac RDFa Parser https://github.com/shellac/java-rdfa

PHP RDF API for PHP (RAP) http://www4.wiwiss.fu-berlin.de/bizer/rdfapi/ http://sourceforge.net/projects/rdfapi-php/ ARC2 http://arc.semsol.org/

Ruby RDF.rb http://rdf.rubyforge.org/ https://github.com/bendiken/rdf A další přídavné moduly

Modely RDF Model založený na trojicích Pracujete s trojicemi?predmet?predikat?objekt Model založený na zdrojích (URI) Zdroje mají vlastnosti a ty hodnoty Model založený na ontologiích Pracujete s třídami, vlastnostmi a individuy definovanými ve zvolených slovnících/schématech/ontologiích. Pojmenovaný graf Trojice patří do grafu pojmenovaného URI adresou. Pracujete s čtveřicemi?graf?predmet?predikat?objekt

Příklady ve frameworku Jena Práce s modelem založeným natrojicích Vytvoření vlastností slovníku Vytvoření trojic v grafu Vypsání trojic z grafu Načtení N3 souboru do grafu

Vytvoření grafu package name.jspetrak; import com.hp.hpl.jena.rdf.model.model; import com.hp.hpl.jena.rdf.model.modelfactory; import com.hp.hpl.jena.rdf.model.property; import com.hp.hpl.jena.rdf.model.rdfnode; import com.hp.hpl.jena.rdf.model.resource; import com.hp.hpl.jena.rdf.model.statement; import com.hp.hpl.jena.rdf.model.stmtiterator; import com.hp.hpl.jena.vocabulary.rdf; public class RZZW { public static void main(string[] args) { Model model = ModelFactory.createDefaultModel(); // Další kód sem } }

Vytvoření vlastností slovníku Property vperson = model.createproperty("http://rdf.datavocabulary.org/#", "Person"); Property vname = model.createproperty("http://rdf.datavocabulary.org/#", "name"); Property vorg = model.createproperty("http://rdf.datavocabulary.org/#", "org"); Property vrole = model.createproperty("http://rdf.datavocabulary.org/#", "role"); Property vurl = model.createproperty("http://rdf.datavocabulary.org/#", "url");

Vytvoření trojic grafu Resource aperson = model.createresource(); model.add(model.createstatement(aperson, RDF.type, vperson)); model.add(model.createstatement(aperson, vname, "Jan Vzorovy")); model.add(model.createstatement(aperson, vorg, "Prikladna s.r.o.")); model.add(model.createstatement(aperson, vrole, "vzorovy zamestnanec")); model.add(model.createstatement(aperson, vurl, model.createresource("http://priklad.cz/")));

Vypsání trojic z grafu StmtIterator iter = model.liststatements(); while (iter.hasnext()) { Statement stmt = iter.nextstatement(); Resource subject = stmt.getsubject(); Property predicate = stmt.getpredicate(); RDFNode object = stmt.getobject(); } System.out.print(subject.toString()); System.out.print(" " + predicate.tostring() + " "); if (object instanceof Resource) { System.out.print(object.toString()); } else { System.out.print(" \"" + object.tostring() + "\""); } System.out.println(".");

Vypsání grafu jako RDF/XML model.write(system.out, "RDF/XML-ABBREV");

Dotazování modelu StmtIterator si = model.liststatements(null, RDF.type, vperson); while (si.hasnext()) { Resource r = si.nextstatement().getsubject(); StmtIterator sii = model.liststatements(r, vname, (RDFNode)null); if (sii.hasnext()) { System.out.println(sii.nextStatement().getObject().toString()); } }

Načtení dat z N3 souboru InputStream is = FileManager.get().open("samples/people.n3"); Model model = ModelFactory.createDefaultModel(); RDFReader r = model.getreader("n3"); r.read(model, is, null); is.close();

Dotazování pomocí SPARQL String squery = "PREFIX v: "; Query query = QueryFactory.create(sQuery); QueryExecution exquery = QueryExecutionFactory.create(query, model); try { ResultSet result = exquery.execselect(); while (result.hasnext()) { QuerySolution solution = result.nextsolution(); Literal name = solution.getliteral( name"); // Další data... } } finally { exquery.close(); }

Cvičení Vytvoření dat a. Zapište do souboru N3 b. Definujte trojice pomocí API Načtěte data do grafu Vypište trojice Vyhledejte všechny osoby a vypište jejich jména

SPARQL

Co je SPARQL SPARQL Protocol and RDF Query Language W3C Standard od 15. 1. 2008 Read-only dotazovací jazyk pro RDF Založený na dalších standardech RDF, XML, HTTP, (WSDL, SOAP) Konkurence pro jiné podobně určené jazyky rdfdb, RDQL, SeRQL

Co je SPARUL SPARQL Update Language SPARQL s možností data měnit

Nástroje SPARQLer http://www.sparql.org/sparql.html RDF Validator/Converter http://www.rdfabout.com/demo/validator/ DBPedia http://dbpedia.org/sparql Snorql http://dbpedia.org/snorql/

Příklad dotazu PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?url FROM <http://journal.dajobe.org/journal/2003/07/semblogs/bloggers.rdf> WHERE {?contributor foaf:name "Tim Berners-Lee".?contributor foaf:weblog?url. }

Co obsahuje SPARQL dotaz Promněnné uvozují se znakem? FROM klauzule identifikující zdrojová data WHERE seznam trojic tvořících tzv. graph pattern

Typy SPARQL dotazů SELECT ASK DESCRIBE CONSTRUCT

SPARQL SELECT Proměnným přiřadí hodnoty a vrátí je v tabulce @prefix foaf: <http://xmlns.com/foaf/0. 1/>. _:a foaf:name "Alice". _:a foaf:knows _:b. _:a foaf:knows _:c. _:b foaf:name "Bob". _:c foaf:name "Clare". _:c foaf:nick "CT". PREFIX foaf: <http://xmlns.com/foaf/0. 1/> SELECT?nameX?nameY?nickY WHERE {?x foaf:knows?y ; foaf:name?namex.?y foaf:name?namey. OPTIONAL {?y foaf:nick?nicky. } }

XML výsledek SPARQL SELECTu <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="namex"/> <variable name="namey"/> <variable name="nicky"/> </head> <results> <result> <binding name="namex"> <literal>alice</literal> </binding> <binding name="namey"> <literal>bob</literal> </binding> </result> <result> <binding name="namex"> <literal>alice</literal> </binding> <binding name="namey"> <literal>clare</literal> </binding> <binding name="nicky"> <literal>ct</literal> </binding> </result> </results> </sparql>

SPARQL ASK Testuje, jestli graph pattern má řešení. Vrací boolean. @prefix foaf: <http://xmlns.com/foaf/0. 1/>. _:a foaf:name "Alice". _:a foaf:knows _:b. _:a foaf:knows _:c. _:b foaf:name "Bob". _:c foaf:name "Clare". _:c foaf:nick "CT". PREFIX foaf: <http://xmlns.com/foaf/0.1 /> ASK { }?x foaf:name Alice

XML výsledek SPARQL ASKu <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparqlresults#"> <head> </head> <results> <boolean>true</boolean> </results> </sparql>

SPARQL DESCRIBE Vrací podgraf vyhovující graph patternu DESCRIBE?person WHERE {?person foaf:name "Tim Berners-Lee" }

SPARQL DESCRIBE DESCRIBE <http://example.org/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> DESCRIBE?x?y <http://example.org/> WHERE {?x foaf:knows?y }

SPARQL CONSTRUCT @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix alice: <http://alice.name/#> alice:me foaf:name "Alice". alice:me foaf:mbox <mailto:alice@example.org>. PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> PREFIX alice: <http://alice.name/#> CONSTRUCT { <http://example.org/person#alice> vcard:fn?name } WHERE { alice:me foaf:name?name. } @prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>. <http://example.org/person#alice> vcard:fn "Alice".

SPARQL endpoint

SPARQL endpoint Defacto webová služba Identifikovaná pomocí URI SPARQL definuje komunikační protokol Příklady aktivních endpointů http://www.w3.org/wiki/sparqlendpoints

Web API Jaký je rozdíl web API proti SPARQL endpointu?

Cvičení Dříve vytvořená data v N3/pomocí API dotazujte přes SPARQL Vypište všechny osoby, jejich firmy a role v nich

Dotazy?