SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

64
RDF + SPARQL querying the web of (lex)data Diego Valerio Camarda regesta.exe www.regesta.com [email protected] dvcama @ github&twitter DiegoValerioCamarda @ slideshare

description

Lecture for SUMMER SCHOOL LEX 2014 4, Sept. 2014, Ravenna, Italy http://summerschoollex.cirsfid.unibo.it/

Transcript of SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Page 1: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

RDF + SPARQL querying the web

of (lex)data

Diego Valerio Camarda regesta.exe

www.regesta.com

[email protected] dvcama @ github&twitter

DiegoValerioCamarda @ slideshare

Page 2: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

a (really) short introduction to linked open data

Page 3: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

what about IRIs and RDF a new way to publish data on the web

ids are ambiguous and suck!

Use URIs as names for things Use HTTP URIs so that people can look up those names Use the standards (RDF, SPARQL) providing useful information Include links to other URIs so that they can discover more things

linked data principles Tim Berners-Lee July 27, 2006

Page 4: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

The Children and Families Act 2014

http://www.legislation.gov.uk/id/uksi/2014/2270

what about IRIs and RDF turning documents into data

ids are ambiguous and suck!

Page 5: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

A new way to design databases RDF

(aka ’define knowledge’)

Page 6: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! the standard (old) approach

ID_P COGNOME NOME REF_ID_SOCIETA GENERE

1 Camarda Diego 1 maschio

2 … … … …

ID_SOCIETA DENOMINAZIONE SITO

1 Regesta.exe srl www.regesta.com

Page 7: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! the new (cool) approach

<http://www.regesta.com/diego>

Subject

Page 8: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! the new (cool) approach

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName>

Subject Predicate

Page 9: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! the new (cool) approach

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’.

Subject Predicate Object

Page 10: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! the new (cool) approach

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’. <http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/firstName> ‘Diego’. <http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/gender> ‘male’.

Page 11: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! the new (cool) approach

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’ ; <http://xmlns.com/foaf/0.1/firstName> ‘Diego’ ; <http://xmlns.com/foaf/0.1/gender> ‘male’ .

Page 12: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! ok, but what a “diego” is?

Page 13: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! it’s a person!

<http://www.regesta.com/diego> a <http://xmlns.com/foaf/0.1/Person>

Page 14: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! adding a Class

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’ ; <http://xmlns.com/foaf/0.1/firstName> ‘Diego’ ; <http://xmlns.com/foaf/0.1/gender> ‘male’ .

<http://www.regesta.com/diego> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .

Page 15: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! building a graph

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’ ; <http://xmlns.com/foaf/0.1/firstName> ‘Diego’ ; <http://xmlns.com/foaf/0.1/gender> ‘male’ ; <http://www.w3.org/1999/...#type> <http://xmlns.com/foaf/0.1/Person> .

<http://www.regesta.com/diego> <http://www.w3.org/ns/org#memberOf> <http://www.regesta.com/about> .

Page 16: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! building a graph

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’ ; <http://xmlns.com/foaf/0.1/firstName> ‘Diego’ ; <http://xmlns.com/foaf/0.1/gender> ‘male’ ; <http://www.w3.org/1999/...#type> <http://xmlns.com/foaf/0.1/Person> ; <http://www.w3.org/ns/org#memberOf> <http://www.regesta.com/about> .

<http://www.regesta.com/about> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/org#Organization> .

Page 17: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! building a graph

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’ ; <http://xmlns.com/foaf/0.1/firstName> ‘Diego’ ; <http://xmlns.com/foaf/0.1/gender> ‘male’ ; <http://www.w3.org/1999/...#type> <http://xmlns.com/foaf/0.1/Person> ; <http://www.w3.org/ns/org#memberOf> <http://www.regesta.com/about> . <http://www.regesta.com/about> <http://www.w3.org/1999/...#type> <http://www.w3.org/ns/org#Organization> .

Page 18: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! building a graph

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’ ; <http://xmlns.com/foaf/0.1/firstName> ‘Diego’ ; <http://xmlns.com/foaf/0.1/gender> ‘male’ ; <http://www.w3.org/1999/...#type> <http://xmlns.com/foaf/0.1/Person> ; <http://www.w3.org/ns/org#memberOf> <http://www.regesta.com/about> . <http://www.regesta.com/about> <http://www.w3.org/1999/...#type> <http://www.w3.org/ns/org#Organization> ; <http://www.w3.org/2004/02/skos/core#prefLabel> ‘Regesta.exe srl’ ; <http://xmlns.com/foaf/0.1/homepage> <http://www.regesta.com> .

Page 19: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! Objects could be Subjects

diego

Page 20: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! considering diego and regesta

diego

regesta

Page 21: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! <diego> <memberOf> <regesta>

diego

regesta

Page 22: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! but, <regesta> <locatedIn> <rome>

diego

regesta

rome

Page 23: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! <diego> <placeOfBirth> <rome>

diego

regesta

rome

Page 24: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! <rome> <parentADM> <italy>

diego

regesta

rome

italy

Page 25: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! <silvia> <placeOfBirth> <italy>

diego

regesta

silvia

rome

italy

Page 26: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! <silvia> <…> <…>

diego

regesta

silvia

rome

italy

Page 27: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Go Triples, go! <…> <…> <…> = a knowledge graph!

diego

regesta

silvia

rome

italy

Page 28: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

A lot of sentence to achieve (descriptive) freedom

<http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/familyName> ‘Camarda’ . <http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/firstName> ‘Diego’ . <http://www.regesta.com/diego> <http://xmlns.com/foaf/0.1/gender> ‘male’ . <http://www.regesta.com/diego> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . <http://www.regesta.com/diego> <http://www.w3.org/ns/org#memberOf> <http://www.regesta.com> . <http://www.regesta.com/silvia> <http://xmlns.com/foaf/0.1/familyName> ‘Mazzini’ . <http://www.regesta.com/silvia> <http://xmlns.com/foaf/0.1/firstName> ‘Silvia’ . <http://www.regesta.com/silvia> <http://xmlns.com/foaf/0.1/gender> ‘female’ . <http://www.regesta.com/silvia> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . <http://www.regesta.com/silvia> <http://www.w3.org/ns/org#memberOf> <http://www.regesta.com> . <http://www.regesta.com> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/org#Organization> . <http://www.regesta.com> <http://www.w3.org/2004/02/skos/core#prefLabel> ‘Regesta.exe srl’ . <http://www.regesta.com/silvia> <http://xmlns.com/foaf/0.1/knows> <http://www.regesta.com/diego> .

<…> <…> <…>.

<noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>.<noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> <makeGoCreazy> <homer>. <noTv> <makeGoCreazy> <homer>. <noBeer> …

Page 29: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Standards for semantic web

Page 30: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

RDF http://www.w3.org/standards/techs/rdf SPARQL http://www.w3.org/standards/techs/sparql ONTOLOGIES http://www.w3.org/standards/semanticweb/ontology

Did you studied HTML? Good! it's time for a new standard

Page 31: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

The Resource Description Framework is a general-purpose language for representing

information in the Web.

It's time for a new standard RDF

Page 32: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

The SPARQL Protocol and RDF Query Language is a query language and protocol for RDF.

It's time for a new standard SPARQL

Page 33: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

On the Semantic Web, vocabularies define the concepts and relationships

(also referred to as “terms”) used to describe and represent

an area of concern.

It's time for a new standard Ontologies

Page 34: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf:firstName dc:title rdfs:label

Pre:fixes (ontologies) just a few words

Page 35: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Browsing the web of data

Page 36: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Resource Description Framework

› SPARQL endpoint › dereferenceable URIs › content negotiation › standard ports, like 80 (HTTP) › JSONP support

MUST!

Page 37: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Resource Description Framework

› SPARQL endpoint › dereferenceable URIs › content negotiation › standards port, like 80 (HTTP) › JSONP support › up-to-date › the endpoint URL is easy to deduce from resources › the resources are described by dc:title or rdfs:label › the endpoint hosts a page for humans › the resources and the endpoint are on the same domain

SHOULD! (please do it, for me)

Page 38: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

SELECT * {?minnesota ?banana ?sun}

SPARQL a must know query language

Page 39: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

SPARQL group graph pattern

diego

regesta

silvia

rome

italy

diego

regesta

silvia

rome

italy

Page 40: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

SPARQL group graph pattern

diego

regesta

rome

silvia italy

silvia italy

Page 41: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

SELECT ?person { ?person <placeOfBirth> ?place. ?person <memberOf> ?company . ?company <locatedIn> ?place . }

SPARQL group graph pattern

<diego>

Page 42: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

SELECT ?person ?prop ?obj { ?person <placeOfBirth> ?place. ?person <memberOf> ?company. ?person ?prop ?obj . ?company <locatedIn> ?place . }

SPARQL group graph pattern

(turn the page)

Page 43: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

person prop obj <diego> rdf:type foaf:Person <diego> foaf:firstName ‘Diego’ <diego> foaf:familyName ‘Camarda’ <diego> foaf:gender ‘male’ <diego> org:memberOf <regesta>

SPARQL group graph pattern

Page 44: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

DESCRIBE <diego>

SPARQL describe

(turn the page)

Page 45: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

<diego> rdf:type foaf:Person . <diego> foaf:firstName ‘Diego’ . <diego> foaf:familyName ‘Camarda’ . <diego> foaf:gender ‘male’ . <diego> org:memberOf <regesta> . <silvia> foaf:knows <diego> .

SPARQL describe

Page 46: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

DISTINCT, COUNT GRAPH, PREFIX isBlank, isIRI, isLiteral, isNumeric FILTER, REGEX, STR FILTER NOT EXISTS, MINUS ORDER BY, OFFSET, LIMIT for other stuff http://www.w3.org/TR/sparql11-query/

SPARQL minimum requirements

Page 47: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Please start negotiating content right now!

Hi dude, I accept: text/html,application/xhtml+xml Html

page Great! I’ll serve you a web page

Hi dude, I accept: application/rdf+xml

RDF data Great… 302, redirect!

Hi dude, I accept: pizza/margherita

406 error mmm… sorry

Page 48: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Please start negotiating content right now!

application/rdf+xml application/xml text/plain text/turtle application/x-turtle application/trix application/x-trig text/n3 text/rdf+n3 application/trix

application/x-trig application/x-binary-rdf text/x-nquads application/ld+json application/rdf+json application/xhtml+xml text/xml application/json application/rdf+xml application/rdf+n3 application/sparql-results+xml application/sparql-results+json

Page 49: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

curl -L -H "Accept: application/rdf+xml" http://dati.camera.it/ocd/governo.rdf/g102 curl -L -H "Accept: text/n3" http://dati.camera.it/ocd/governo.rdf/g102

Please start negotiating content using CURL…

Page 50: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Java : Sesame / Jena

Python : RDFLib Ruby : RDF.rb

nodeJs : sparql-client

or, as I do, simple HTTP GET +

parsing results as json or xml

Please start negotiating content …or a framework!

Page 51: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

RDF data storing and deploying

Page 52: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

It’s slow so keep calm

1 record 15 triples

2.949.771 votes 64.948.856 triples

usually

eg. Chamber of deputies

data big data

RDF probably will transform

Page 53: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Virtuoso Sesame

Fuseki (Jena) Owlim / Bigdata (Sesame)

AllegroGraph D2R server

ARC2 …

Triplestores I just need a SPARQL endpoint

I just really need http://yourdomain/sparql

Page 54: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Case studies

Page 55: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

select distinct ?o where {?s a ?o}

select ?o count(distinct ?s) where {?s a ?o}

select count(?s) where {?s ?p ?o}

select count(?s) ?class where {?s ?p ?o; a ?class}

select distinct ?p where {?s a <http://classe>; ?p ?o}

select ?p count(?p) where {?s a <http://classe>; ?p ?o}

select ?s where {?s a <http://classe>}

?p ?o where {<http://URI> ?p ?o}

select distinct ?s ?title where {?s a <http://classe>; dc:title ?title. FILTER(REGEX(? title,’parola’,’i’))} LIMIT 100

SPARQL magic a query for all seasons

Page 56: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Case studies Chamber of deputies Senate of Republic

Page 57: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

http://dati.camera.it/sparql

http://dati.senato.it/sparql

Useful links

Page 58: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

All Bills filtered by year SELECT DISTINCT * {?bill a ocd:atto; dc:title ?title; dc:date ?date . FILTER(regex(?date,'^2014'))} ORDER BY ?date

Last voted Bills SELECT distinct * WHERE { ?bill a ocd:atto; dc:title ?title. ?votazione a ocd:votazione; ocd:rif_attoCamera ?bill; dc:date ?data; dc:title ?denominazione; dc:description ?descrizione; ocd:votanti ?votanti; ocd:votazioneFinale 1; ocd:favorevoli ?favorevoli; ocd:contrari ?contrari; ocd:astenuti ?astenuti; ocd:rif_leg <http://dati.camera.it/ocd/legislatura.rdf/repubblica_17>} ORDER BY DESC(?data)

Example queries Chamber of deputies

Page 59: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

All Bills filtered by year PREFIX osr: <http://dati.senato.it/osr/> SELECT DISTINCT * {?bill a osr:Ddl; osr:titolo ?title; osr:dataPresentazione ?date . FILTER(regex(STR(?date),'^2014'))} ORDER BY ASC(?date)

Last approved Bills PREFIX osr: <http://dati.senato.it/osr/> SELECT DISTINCT ?ddl ?titolo ?titoloBreve ?natura ?stato ?dataApprovato WHERE { ?ddl a osr:Ddl. ?ddl osr:statoDdl ?stato. ?ddl osr:ramo "S"^^<http://www.w3.org/2001/XMLSchema#string>. ?ddl osr:dataPresentazione ?dataPresentazione. ?ddl osr:titolo ?titolo. OPTIONAL { ?ddl osr:titoloBreve ?titoloBreve }. ?ddl osr:natura ?natura. ?ddl osr:dataStatoDdl ?dataApprovato. ?ddl osr:testoApprovato ?testoApprovato FILTER(xsd:date(str(?dataApprovato)) <= xsd:date(str("2014-12-31"))) FILTER(xsd:date(str(?dataApprovato)) >= xsd:date(str("2014-01-01"))) } ORDER BY ?dataApprovato

Example queries Senate of Republic

Page 60: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Case studies UK Legislation

Page 61: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

http://gov.tso.co.uk/legislation/sparql

http://openuplabs.tso.co.uk/sparql/gov-legislation

http://www.opsi.gov.uk/legislation-api/developer/formats/rdf

Useful links

Page 62: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

All ‘Works’ filtered by year SELECT ?work ?date ?title {?work a frbr:Work . ?work dct:title ?title . ?work dct:created ?date . FILTER (REGEX(STR(?date),'^2014')) } ORDER BY desc(?date)

Top subjects by year SELECT (count(?sub) as ?tot) ?sub { ?work a frbr:Work . ?work dct:subject ?sub . ?work dct:created ?date . FILTER (REGEX(STR(?date),'^2014')) } GROUP BY ?sub ORDER BY desc(?tot) LIMIT 100

Example queries

Page 63: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

Even more Useful links

Page 64: SUMMER SCHOOL LEX 2014 - RDF + SPARQL querying the web of (lex)data

W3C standards http://www.w3.org/standards/semanticweb/ OKFN endpoints status (and list) http://sparqles.okfn.org LodLive (a SPRQL navigator) http://en.lodlive.it a very good intro to RDF https://github.com/JoshData/rdfabout/blob/gh-pages/intro-to-rdf.md Tim Berners-Lee’s “Linked Data – 5 stars ranking” http://www.w3.org/DesignIssues/LinkedData.html My github page http://github.com/dvcama My email mailto:[email protected]