2011 4iz440 semantic web – rdf, sparql, and software apis
DESCRIPTION
TRANSCRIPT
![Page 1: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/1.jpg)
The Seman)c Web RDF, SPARQL and so0ware APIs 4IZ440 Knowledge Representa4on and Reasoning on the WWW Josef Petrák | [email protected]
![Page 2: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/2.jpg)
Worth a note § Open Data iniDave around world and Europe open staDsDcal and government data, usually in RDF format.
§ It has several success stories § hLp://headtoweb.posterous.com/open-‐data-‐success-‐stories
§ Google is integraDng RDF encoded as RDFa in pages into its search results.
§ UEP is not behind – DIKE research group KEG started Czech–Slovak semanDc iniDaDve called SemanDcs
§ And we have a RDF-‐based website deployed, see hLp://keg.vse.cz/
![Page 3: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/3.jpg)
Outline § RDF representaDon formats § Data handling approaches § So0ware APIs overview § Approaches in examples § MoDvaDon example: web applicaDon
![Page 4: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/4.jpg)
RDF representaDon
![Page 5: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/5.jpg)
Syntaxes § RDF has several syntaxes. § A “graph” is the reference syntax. § The W3C endorsed file format is RDF/XML § Other file formats:
§ N-‐Triples § N3 § RDF/JSON § RDFa
![Page 6: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/6.jpg)
RDF graph
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>PREFIX gd: <http://rdf.data-vocabulary.org/#>
gd:Person rdf:type
gd:name John Example
Sample Corp. Inc.
gd:affiliaDon
![Page 7: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/7.jpg)
RDF/XML <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#” xmlns:gd=“http://rdf.data-‐vocabulary.org/#”> <rdf:Resource> <rdf:type rdf:resource=“http://rdf.data-‐vocabulary.org/#Person”/> <gd:name>John Example</gd:name> <gd:affiliation>Sample Corp. Inc.</gd:affiliation> </rdf:Resource> </rdf:RDF>
![Page 8: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/8.jpg)
RDF/XML (shortened) <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#” xmlns:gd=“http://rdf.data-‐vocabulary.org/#”> <gd:Person> <gd:name>John Example</gd:name> <gd:affiliation>Sample Corp. Inc.</gd:affiliation> </gd:Person> </rdf:RDF>
![Page 9: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/9.jpg)
N3 NotaDon @prefix gd: <http://rdf.data-‐vocabulary.org/#> . [] a gd:Person; gd:name “John Example”; gd:affiliation “Sample Corp. Inc.” .
![Page 10: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/10.jpg)
N–Triples _:a <http://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#type>
<http://rdf.data-‐vocabulary.org/#Person> . _:a <http://rdf.data-‐vocabulary.org/#name>
“John Example” . _:a <http://rdf.data-‐vocabulary.org/#affiliation>
“Sample Corp. Inc.” . § Primarily used to defined RDF test cases § Subset of N3 NotaDon
![Page 11: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/11.jpg)
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“ } ] } }
![Page 12: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/12.jpg)
RDFa <html xmlns=“http://www.w3.org/1999/xhtml” xmlns:rdf=“http://www.w3.org/1999/02/22-‐rdf-‐syntax-‐ns#” xmlns:gd=“http://rdf.data-‐vocabulary.org/#”> <p typeof=“gd:Person”> <em property=“gd:name”>John Example</em> is working at <em property=“gd:affiliation”>Sample Corp. Inc.</em>. </p> </html>
![Page 13: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/13.jpg)
Resources about RDF formats § RDF/XML
§ hLp://www.w3.org/TR/rdf-‐syntax-‐grammar/ § N3 NotaDon
§ hLp://www.w3.org/DesignIssues/NotaDon3 § hLp://www.w3.org/2000/10/swap/Primer
§ N–Triples § hLp://www.w3.org/TR/rdf-‐testcases/#ntriples
§ RDF/JSON § hLp://n2.talis.com/wiki/RDF_JSON_SpecificaDon
§ RDFa § hLp://www.w3.org/TR/rdfa-‐syntax/
![Page 14: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/14.jpg)
Task #1 1. Use Google Data Vocabulary
§ hLp://www.data-‐vocabulary.org/Person/ 2. Created a NotaDon3 file with demo data about people
![Page 15: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/15.jpg)
Data handling
![Page 16: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/16.jpg)
RDF models § Statement–centric
§ Working with triples of ?subject ?predicate ?object § Resource–centric
§ Working with resources having properDes and their values § Ontology–centric
§ Working with classes, properDes, and individuals as defined in selected vocabulary/schema/ontology
§ Named graph § Triples belongs to a graph with URI name § Working with quads of ?graph ?subject ?predicate ?object
![Page 17: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/17.jpg)
So0ware APIs
![Page 18: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/18.jpg)
Java § Jena
§ hLp://openjena.org/ § hLp://sourceforge.net/projects/jena/
§ Sesame § hLp://www.openrdf.org/
§ Shellac RDFa Parser § hLps://github.com/shellac/java-‐rdfa
![Page 19: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/19.jpg)
PHP § RDF API for PHP (RAP)
§ hLp://www4.wiwiss.fu-‐berlin.de/bizer/rdfapi/ § hLp://sourceforge.net/projects/rdfapi-‐php/
§ ARC2 § hLp://arc.semsol.org/
![Page 20: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/20.jpg)
Ruby § RDF.rb
§ hLp://rdf.rubyforge.org/ § hLps://github.com/bendiken/rdf § Plus various modules
![Page 21: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/21.jpg)
Code Examples
![Page 22: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/22.jpg)
File-‐read § Task: Read RDF data from a NotaDon3 file format into memory model.
![Page 23: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/23.jpg)
Read N3 (Jena) InputStream is = FileManager.get().open("samples/people.n3"); Model model = ModelFactory.createDefaultModel(); RDFReader r = model.getReader("N3"); r.read(model, is, null); is.close();
![Page 24: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/24.jpg)
Read N3 (RDF.rb) repository = RDF::Repository.new RDF::N3::Reader.open(‘samples/people.n3’) { |reader| repository << reader }
![Page 25: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/25.jpg)
Read N3 (ARC2) $parser = ARC2::getRDFParser(); $parser-‐>parse(‘samples/people.n3');
$triples = $parser-‐>getTriples();
![Page 26: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/26.jpg)
Read N3 (RAP) $model = ModelFactory::getDefaultModel(); $model-‐>load('samples/people.n3'); § This code won’t run, because there is N3Reader bug. § Works also for RDF/XML and N–Triples formats.
![Page 27: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/27.jpg)
Traverse triples § Task: Take a memory model and list all or parDcular RDF triples.
![Page 28: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/28.jpg)
Traverse triples (Jena) Model model = ModelFactory.createDefaultModel(); // Load data into model StmtIterator i = model.listStatements(); while (i.hasNext()) { Statement stmt = i.nextStatement(); Resource subject = stmt.getSubject(); Property predicate = stmt.getPredicate(); RDFNode object = stmt.getObject(); // Printing out }
![Page 29: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/29.jpg)
Query Model (Jena) Resource rPerson = model.getResource("http://rdf.data-‐vocabulary.org/#Person"); Property rName = model.getProperty("http://rdf.data-‐vocabulary.org/#name"); StmtIterator si = model.listStatements(null, RDF.type, rPerson); while (si.hasNext()) { Resource r = si.nextStatement().getSubject(); StmtIterator sii = model.listStatements(r, rName, (RDFNode)null); if (sii.hasNext()) { System.out.println(sii.nextStatement().getObject().toString()); } }
![Page 30: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/30.jpg)
Traverse triples (RDF.rb) repository = RDF::Repository.new # Load data repository.each_statement { |statement| puts statement }
![Page 31: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/31.jpg)
Query model (RDF.rb) GD = RDF::Vocabulary.new('http://rdf.data-‐vocabulary.org/#') repository = RDF::Repository.new # Load data query = RDF::Query.new({ :person => { RDF.type => GD.Person, GD.name => :name } }) query.execute(graph).each do |person| puts "name=#{person.name}" end
![Page 32: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/32.jpg)
Query SPARQL Endpoint § Task: Query a SPARQL endpoint and write out the data. E.g. from DBPedia, write one random blackboard gag wriLen by Bart Simpson.
![Page 33: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/33.jpg)
Query SPARQL Endpoint (Jena) String qa = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#>" + "PREFIX dbpprop: <http://dbpedia.org/property/>" + "PREFIX dcterms: <http://purl.org/dc/terms/>" + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-‐schema#>" + "SELECT ?gag WHERE { " + "?series skos:broader <http://dbpedia.org/resource/Category:The_Simpsons_episodes> ." + " ?episode dcterms:subject ?series ." + " ?episode dbpprop:blackboard ?gag ." + "}" + "LIMIT 1000"; Query q = QueryFactory.create(qa); QueryExecution qe = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", q); ResultSet rs = qe.execSelect(); ResultSetFormatter.out(System.out, rs, q); qe.close();
![Page 34: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/34.jpg)
Query SPARQL Endpoint (RDF.rb) sparql = SPARQL::Client.new("http://dbpedia.org/sparql") result = sparql.query("SELECT ?gag WHERE { ?series skos:broader <http://dbpedia.org/resource/Category:The_Simpsons_episodes> . ?episode dcterms:subject ?series . ?episode dbpprop:blackboard ?gag . } LIMIT 1000") puts result[rand(result.length)][:gag]
![Page 35: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/35.jpg)
Query SPARQL Endpoint (RAP) $client = ModelFactory::getSparqlClient("http://www.exampleSparqlService.net:2020/example"); $query = new ClientQuery(); $query-‐>query(‘PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dbpprop: <http://dbpedia.org/property/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-‐schema#> SELECT ?gag WHERE { ?series skos:broader <http://dbpedia.org/resource/
Category:The_Simpsons_episodes> . ?episode dcterms:subject ?series . ?episode dbpprop:blackboard ?gag . } LIMIT 1000’);
$result = $client-‐>query($query); foreach($result as $line){ echo($line['?gag']-‐>toString()); }
![Page 36: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/36.jpg)
Query SPARQL Endpoint (ARC2) $store = ARC2::getRemoteStore( array('remote_store_endpoint' => 'http://dbpedia.org/sparql')); $q = ‘PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dbpprop: <http://dbpedia.org/property/> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-‐schema#> SELECT ?gag WHERE { ?series skos:broader <http://dbpedia.org/resource/
Category:The_Simpsons_episodes> . ?episode dcterms:subject ?series . ?episode dbpprop:blackboard ?gag . } LIMIT 1000’;
$rows = $store-‐>query($q, 'rows');
![Page 37: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/37.jpg)
Task #2 1. Select one of frameworks (preferably Jena) 2. Load data from your NotaDon3 file 3. Write out names and work Dtles of people
![Page 38: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/38.jpg)
MoDvaDon Example
![Page 39: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/39.jpg)
Knowledge Engineering Group Website § hLp://keg.vse.cz/ § RDF outside
§ Data dumps in RDF/XML § Web pages enriched with RDFa
§ RDF inside § Data created by SPARQL INSERT § Data queried by SPARQL SELECT § Data updated by SPARQL DELETE and SELECT § Data manipulated by user–friendly forms
§ Ongoing: data integraDon with ISIS VŠE and other department applicaDons
![Page 40: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/40.jpg)
SPARQL: Create data INSERT INTO <http://keg.vse.cz/> { <http://keg.vse.cz/resource/event/1> rdf:type ical:Vevent . <http://keg.vse.cz/resource/event/1> ical:uid ”1" . <http://keg.vse.cz/resource/event/1> ical:summary ”IZI440" . <http://keg.vse.cz/resource/event/1> ical:dtstart ”2011-‐02-‐28" . }
![Page 41: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/41.jpg)
SPARQL: Read data SELECT ?summary ?uid ?dtstart ?dtend WHERE { <http://keg.vse.cz/resource/event/1> rdf:type ical:Vevent . <http://keg.vse.cz/resource/event/1> ical:uid ?uid . <http://keg.vse.cz/resource/event/1> ical:summary ?summary . <http://keg.vse.cz/resource/event/1> ical:dtstart ?dtstart . OPTIONAL { <http://keg.vse.cz/resource/event/1> ical:dtend ?dtend . } }
![Page 42: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/42.jpg)
SPARQL: Update data DELETE { <http://keg.vse.cz/resource/event/1> ?p ?o . } INSERT INTO <http://keg.vse.cz/> { <http://keg.vse.cz/resource/event/1> rdf:type ical:Vevent . <http://keg.vse.cz/resource/event/1> ical:uid ”1" . <http://keg.vse.cz/resource/event/1> ical:summary ”4IZ440" . <http://keg.vse.cz/resource/event/1> ical:dtstart ”2011-‐02-‐28" . }
![Page 43: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/43.jpg)
References § hLp://dsic.zapisky.info/RDF/FOAF/parsingWithPHP/ § hLp://zapisky.info/?item=zverejnime-‐akademicke-‐projekty-‐samozrejme-‐semanDcky
§ BOOK – John Hebeler (Author), MaLhew Fisher (Author), Ryan Blace (Author), Andrew Perez-‐Lopez (Author), Mike Dean (Foreword): Seman4c Web Programming, Wiley, 2009
![Page 44: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/44.jpg)
QuesDons?
![Page 45: 2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs](https://reader034.vdocuments.mx/reader034/viewer/2022052617/5472ea21b4af9fcd0a8b50eb/html5/thumbnails/45.jpg)
Thank you