SlideShare uma empresa Scribd logo
1 de 35
0 to 60 on SPARQL queries in 50 minutes
Ethan Gruber
American Numismatic Society
gruber@numismatics.org
@ewg118
Some URLs
Blog post with list of SPARQL queries in Gist (including slideshow link)
http://bit.ly/1PGneCf
Online Coins of the Roman Empire (OCRE)
http://numismatics.org/ocre/
Coinage of the Roman Republic Online (CRRO)
http://numismatics.org/crro/
Nomisma.org
http://nomisma.org/
Google Fusion Tables:
http://tables.googlelabs.com/
Denarius
Denier
Δηνάριον
http://nomisma.org/denarius
<http://nomisma.org/id/denarius> skos:prefLabel “Denarius”@en ;
rdf:type nmo:Denomination ;
skos:exactMatch <http://vocab.getty.edu/aat/300037266> .
Denarius as Triples
What is a coin type?
Material: silver
Manufacture: struck
Mint: Emerita
Denomination: Denarius
Authority: Augustus
Legend
Icononography
Defining concepts on nomisma.org
Material: http://nomisma.org/id/ar
Manufacture: http://nomisma.org/id/struck
Mint: http://nomisma.org/id/emerita
Denomination: http://nomisma.org/id/denarius
Authority: http://nomisma.org/id/augustus
Legend: “Literal”
Icononography: “Literal”
A coin type URI:
http://numismatics.org/ocre/id/ric.1(2).aug.4B
Coin: http://numismatics.org/collection/1948.19.1029
Title, collection, accession number
Physical attributes
Image URLs
Findspot
http://collection.britishmuseum.org/id/object/CGR219958
http://www.smb.museum/ikmk/object.php?id=18207658
Hoard: http://numismatics.org/chrr/id/ZAR
Title, publisher
Findspot
● Basic intro to SPARQL syntax
● Filtering/sorting
● Dealing with numbers
● OPTIONAL matches
● Merging with UNION
● Geographic queries
● Visualization with Google Fusion Tables
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX ecrm: <http://erlangen-crm.org/current/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX nm: <http://nomisma.org/id/>
PREFIX nmo: <http://nomisma.org/ontology#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT * WHERE {
?s ?p ?o
} LIMIT 100
http://nomisma.org/sparql
?s ?p ?o
?s = Subject
?p = Predicate (also, property)
?o = Object
SELECT ?label WHERE {
<http://nomisma.org/id/rome> <http://www.w3.org/2004/02/skos/core#prefLabel> ?label
}
Purpose: get a list of preferred labels for the concept of “Rome.” See
http://nomisma.org/id/rome for all available properties
https://gist.github.com/ewg118/a5a2de372a7734a090ad#file-rome_labels
http://nomisma.org/id/rome
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX nm: <http://nomisma.org/id/>
Prefixes: Shortcuts for expressing URIs
SELECT ?label WHERE {
nm:rome skos:prefLabel ?label
}
Increasing query complexity
SELECT ?label ?type ?field ?lat ?long WHERE {
nm:rome skos:prefLabel ?label .
nm:rome rdf:type ?type .
nm:rome dcterms:isPartOf ?field .
nm:rome geo:location ?loc .
?loc geo:lat ?lat .
?loc geo:long ?long
}
Get labels, RDF type (class), field of numismatics, latitude, and longitude
https://gist.github.com/ewg118/3c55da72510cae200f93
SELECT ?label ?type ?field ?lat ?long WHERE {
nm:rome skos:prefLabel ?label ;
rdf:type ?type ;
dcterms:isPartOf ?field ;
geo:location ?loc .
?loc geo:lat ?lat ;
geo:long ?long
}
Using semicolons to simplify queries on the same Subject
Sorting and Filtering
SELECT ?label WHERE {
nm:rome skos:prefLabel ?label
} ORDER BY ASC(xsd:string(?label))
Order by string ?label in ascending (ASC) alphabetical order (DESC for descending)
https://gist.github.com/ewg118/00be8e5671a795a147ed
SELECT ?label WHERE {
nm:rome skos:prefLabel ?label .
FILTER langMatches( lang(?label), "en" )
}
Filter only for English labels
https://gist.github.com/ewg118/8161a9e118f3b8803a97
Broadening our queries
SELECT ?mints WHERE {
?mints a nmo:Mint
}
Get all URIs that are defined as a “mint” in nomisma.org:
http://nomisma.org/ontology#Mint
Note: 'a' is equivalent to 'rdf:type'
https://gist.github.com/ewg118/5e94523486541f3d89e2
Visualizing Greek Coin Production
SELECT ?label ?lat ?long WHERE {
?mints a nmo:Mint ;
skos:prefLabel ?label ;
dcterms:isPartOf nm:greek_numismatics ;
geo:location ?loc .
?loc geo:lat ?lat ;
geo:long ?long
FILTER langMatches( lang(?label), "en" )
}
Get all mints that are part of Greek numismatics and display the English
label, latitude, and longitude
https://gist.github.com/ewg118/7eb155ed89f04219af0f
Drops right into Google Fusion Tables!
Let's add complexity:
Querying Roman Republican Coins
A Coin Type: RRC 273/1
From Michael Crawford's
Roman Republican Coinage (1974)
http://numismatics.org/crro/id/rrc-273.1
PREFIX crro:<http://numismatics.org/crro/id/>
SELECT * WHERE {
?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ;
a ?type
}
Let's get all associated URIs and their type.
nmo:hasTypeSeriesItem: a URI linking to a reference in a type corpus
https://gist.github.com/ewg118/e5be0d3b8c3f6c262432
PREFIX crro:<http://numismatics.org/crro/id/>
SELECT ?objects ?weight WHERE {
?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ;
nmo:hasWeight ?weight
}
PREFIX crro:<http://numismatics.org/crro/id/>
SELECT ?objects ?diameter ?weight WHERE {
?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ;
nmo:hasWeight ?weight ;
nmo:hasDiameter ?diameter
}
Get all of the objects of the coin type RRC 273/1 and display weight/diameter
https://gist.github.com/ewg118/55f16a2a96521d6e6768
SELECT ?objects ?title ?diameter ?weight ?depiction WHERE {
?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ;
a nmo:NumismaticObject ;
dcterms:title ?title .
OPTIONAL { ?objects nmo:hasWeight ?weight }
OPTIONAL { ?objects nmo:hasDiameter ?diameter }
OPTIONAL { ?objects foaf:depiction ?depiction }
}
Optional values
Get URIs of RRC 273/1 which are coins. Get the title and optional weight, diameter, and image
https://gist.github.com/ewg118/9fdcbc32ffa07c7a5f42
SELECT (AVG(xsd:decimal(?weight)) AS ?avgWeight) WHERE {
?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ;
nmo:hasWeight ?weight
}
Average Values
What is this doing?
1.Casts ?weight as decimal number
2.Averages these numbers
3.Calls the new variable ?avgWeight
https://gist.github.com/ewg118/c059341524d187c76185
Digging Deeper into the Graph
SELECT * WHERE {
?types nmo:hasMaterial nm:ar ;
dcterms:source nm:rrc
}
SELECT ?objects WHERE {
?types nmo:hasMaterial nm:ar ;
dcterms:source nm:rrc .
?objects nmo:hasTypeSeriesItem ?types ;
a nmo:NumismaticObject
} LIMIT 100
All silver coin types from Roman Republican Coinage
https://gist.github.com/ewg118/b7530d6f9156ea2b2f42
All silver Republican coins
https://gist.github.com/ewg118/9500a604b2117698caae
Extending Queries with UNION
SELECT ?objects WHERE {
{ ?types nmo:hasMaterial nm:ar }
UNION { ?types nmo:hasMaterial nm:av }
?types dcterms:source nm:rrc .
?objects nmo:hasTypeSeriesItem ?types ;
a nmo:NumismaticObject
} LIMIT 100
Gather all Republican types that are silver and gold and list specimens
https://gist.github.com/ewg118/8ff575266b7dd1faf114
SELECT (count(?objects) as ?count) WHERE {
?types nmo:hasMaterial nm:ar ;
dcterms:source nm:rrc .
?objects nmo:hasTypeSeriesItem ?types ;
a nmo:NumismaticObject
}
SELECT ?label (count(?mint) as ?count) WHERE {
?types nmo:hasMaterial nm:ar ;
dcterms:source nm:rrc ;
nmo:hasMint ?mint .
?mint skos:prefLabel ?label .
FILTER langMatches(lang(?label), "en")
} GROUP BY ?label ORDER by ASC(?label)
Above: a count of all silver coins. Below: a count/order by mint
Counting
https://gist.github.com/ewg118/cb603f187f065acf1535 (above)
https://gist.github.com/ewg118/c854c94c3ed8fd0af898 (below)
Doing more with geography
SELECT DISTINCT ?object ?type ?findspot ?lat ?long ?name WHERE {
?coinType nmo:hasMaterial nm:ar ;
dcterms:source nm:ric .
{ ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
nmo:hasFindspot ?findspot }
UNION { ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
dcterms:isPartOf ?hoard .
?hoard nmo:hasFindspot ?findspot }
UNION { ?contents nmo:hasTypeSeriesItem ?coinType ;
a dcmitype:Collection .
?object dcterms:tableOfContents ?contents ;
nmo:hasFindspot ?findspot }
?object a ?type .
?findspot geo:lat ?lat .
?findspot geo:long ?long .
OPTIONAL { ?findspot foaf:name ?name }
}
Gather a union of all coins with explicit findspots, findspots derived from hoards, and a list of
hoards that are connected to silver coin types. Display findspot data.
https://gist.github.com/ewg118/c1fb8ba5c5609d260205
SELECT DISTINCT ?findspot ?lat ?long ?name WHERE {
?coinType nmo:hasMaterial nm:ar ;
dcterms:source nm:ric .
{ ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
nmo:hasFindspot ?findspot }
UNION { ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
dcterms:isPartOf ?hoard .
?hoard nmo:hasFindspot ?findspot }
UNION { ?contents nmo:hasTypeSeriesItem ?coinType ;
a dcmitype:Collection .
?object dcterms:tableOfContents ?contents ;
nmo:hasFindspot ?findspot }
?object a ?type .
?findspot geo:lat ?lat .
?findspot geo:long ?long .
OPTIONAL { ?findspot foaf:name ?name }
}
Distinct Findspots Only
https://gist.github.com/ewg118/2dc16c250e77a0996e28
Filtering By Date
SELECT DISTINCT ?object ?type ?findspot ?lat ?long ?name ?closingDate WHERE {
?coinType nmo:hasDenomination nm:denarius ;
nmo:hasEndDate ?date .
FILTER ( ?date >= "-0100"^^xsd:gYear && ?date <= "-0050"^^xsd:gYear ) .
{ ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
nmo:hasFindspot ?findspot }
UNION { ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
dcterms:isPartOf ?hoard .
?hoard nmo:hasFindspot ?findspot }
UNION { ?contents nmo:hasTypeSeriesItem ?coinType ;
a dcmitype:Collection .
?object dcterms:tableOfContents ?contents ;
nmo:hasFindspot ?findspot }
?object a ?type .
?findspot geo:lat ?lat .
?findspot geo:long ?long .
OPTIONAL { ?findspot foaf:name ?name }
OPTIONAL { ?object nmo:hasClosingDate ?closingDate }
} ORDER BY ?date
https://gist.github.com/ewg118/0ce62502c1876844ca2a
SELECT DISTINCT ?findspot ?lat ?long ?name WHERE {
?coinType nmo:hasMaterial nm:ar ;
dcterms:source nm:ric .
{ ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
nmo:hasFindspot ?findspot }
UNION { ?object nmo:hasTypeSeriesItem ?coinType ;
rdf:type nmo:NumismaticObject ;
dcterms:isPartOf ?hoard .
?hoard nmo:hasFindspot ?findspot }
UNION { ?contents nmo:hasTypeSeriesItem ?coinType ;
a dcmitype:Collection .
?object dcterms:tableOfContents ?contents ;
nmo:hasFindspot ?findspot }
?object a ?type .
?findspot geo:lat ?lat .
?findspot geo:long ?long .
OPTIONAL { ?findspot foaf:name ?name }
}
Distinct Findspots Only
https://gist.github.com/ewg118/2dc16c250e77a0996e28
Filtering By Regular Expression
SELECT DISTINCT ?coinTypeLabel ?mintLabel ?lat ?long ?date ?denominationLabel
WHERE {
?coinType nmo:hasReverse ?reverse .
?reverse dcterms:description ?description FILTER regex(?description, "jupiter", "i") .
?coinType skos:prefLabel ?coinTypeLabel FILTER langMatches(lang(?
coinTypeLabel), "en") .
?coinType nmo:hasMint ?mint .
?mint geo:location ?loc ;
skos:prefLabel ?mintLabel FILTER langMatches(lang(?mintLabel), "en") .
?loc geo:lat ?lat ;
geo:long ?long .
?coinType nmo:hasEndDate ?date FILTER (?date >= "0001"^^xsd:gYear)
OPTIONAL { ?coinType nmo:hasDenomination ?denomination .
?denomination skos:prefLabel ?denominationLabel FILTER
langMatches(lang(?denominationLabel), "en") }
} ORDER BY ASC(?date)
Get the geographic distribution of coins mentioning Jupiter on the reverse, after A.D. 1
https://gist.github.com/ewg118/f5e177c30fff5a282cb2
Advanced Spatial Query
SELECT DISTINCT ?hoard ?label ?lat ?long WHERE {
?loc spatial:nearby (37.974722 23.7225 50 'km') ;
geo:lat ?lat ;
geo:long ?long .
?hoard nmo:hasFindspot ?loc ;
a nmo:Hoard
OPTIONAL { ?hoard dcterms:title ?label }
OPTIONAL { ?hoard skos:prefLabel ?label }
}
Get hoards found within 50 km of a lat and long (Athens)
https://gist.github.com/ewg118/0bbf7e3c670f7394665f

Mais conteúdo relacionado

Mais procurados

Robb broome rubyconf x presentation for publication
Robb broome rubyconf x presentation for publicationRobb broome rubyconf x presentation for publication
Robb broome rubyconf x presentation for publication
Robb Broome
 
Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...
Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...
Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...
adrianoalmeida7
 
Apache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:CodecApache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:Codec
moai kids
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
Taro Matsuzawa
 

Mais procurados (20)

Robb broome rubyconf x presentation for publication
Robb broome rubyconf x presentation for publicationRobb broome rubyconf x presentation for publication
Robb broome rubyconf x presentation for publication
 
Php data structures – beyond spl (online version)
Php data structures – beyond spl (online version)Php data structures – beyond spl (online version)
Php data structures – beyond spl (online version)
 
Building fast interpreters in Rust
Building fast interpreters in RustBuilding fast interpreters in Rust
Building fast interpreters in Rust
 
Haskell in the Real World
Haskell in the Real WorldHaskell in the Real World
Haskell in the Real World
 
Invertible-syntax 入門
Invertible-syntax 入門Invertible-syntax 入門
Invertible-syntax 入門
 
PHP data structures (and the impact of php 7 on them), phpDay Verona 2015, Italy
PHP data structures (and the impact of php 7 on them), phpDay Verona 2015, ItalyPHP data structures (and the impact of php 7 on them), phpDay Verona 2015, Italy
PHP data structures (and the impact of php 7 on them), phpDay Verona 2015, Italy
 
Regular expression for everyone
Regular expression for everyoneRegular expression for everyone
Regular expression for everyone
 
PHP 7 – What changed internally?
PHP 7 – What changed internally?PHP 7 – What changed internally?
PHP 7 – What changed internally?
 
Software Exploits
Software ExploitsSoftware Exploits
Software Exploits
 
Metaprogramming in Haskell
Metaprogramming in HaskellMetaprogramming in Haskell
Metaprogramming in Haskell
 
.Net (F # ) Records, lists
.Net (F # ) Records, lists.Net (F # ) Records, lists
.Net (F # ) Records, lists
 
From android/java to swift (3)
From android/java to swift (3)From android/java to swift (3)
From android/java to swift (3)
 
Search Engine-Building with Lucene and Solr
Search Engine-Building with Lucene and SolrSearch Engine-Building with Lucene and Solr
Search Engine-Building with Lucene and Solr
 
ITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function ProgrammingITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function Programming
 
Functional Algebra: Monoids Applied
Functional Algebra: Monoids AppliedFunctional Algebra: Monoids Applied
Functional Algebra: Monoids Applied
 
Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...
Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...
Cypher inside out: Como a linguagem de pesquisas em grafo do Neo4j foi constr...
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws
 
Apache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:CodecApache Commons ソースリーディングの会:Codec
Apache Commons ソースリーディングの会:Codec
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
 
The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31
 

Destaque

Koha dans les bibliothèques de l'université Rennes 2
Koha dans les bibliothèques de l'université Rennes 2Koha dans les bibliothèques de l'université Rennes 2
Koha dans les bibliothèques de l'université Rennes 2
Julien Sicot
 
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-201518 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
Emmanuelle Morlock
 

Destaque (16)

20150504 introduction2 digitalepigraphy-visible-words_final
20150504 introduction2 digitalepigraphy-visible-words_final20150504 introduction2 digitalepigraphy-visible-words_final
20150504 introduction2 digitalepigraphy-visible-words_final
 
2010 09 06_construire-edition-electronqiue-vol-2-bouvard-et-pecuchet-colloque...
2010 09 06_construire-edition-electronqiue-vol-2-bouvard-et-pecuchet-colloque...2010 09 06_construire-edition-electronqiue-vol-2-bouvard-et-pecuchet-colloque...
2010 09 06_construire-edition-electronqiue-vol-2-bouvard-et-pecuchet-colloque...
 
Projets d'Humanités numérique et collaboration de différents métiers
Projets d'Humanités numérique et collaboration de différents métiersProjets d'Humanités numérique et collaboration de différents métiers
Projets d'Humanités numérique et collaboration de différents métiers
 
Ergonomie web et mobile en bibliothèque
Ergonomie web et mobile en bibliothèqueErgonomie web et mobile en bibliothèque
Ergonomie web et mobile en bibliothèque
 
Donnez vie à vos supports avec le Screencasting
Donnez vie à vos supports avec le ScreencastingDonnez vie à vos supports avec le Screencasting
Donnez vie à vos supports avec le Screencasting
 
Koha dans les bibliothèques de l'université Rennes 2
Koha dans les bibliothèques de l'université Rennes 2Koha dans les bibliothèques de l'université Rennes 2
Koha dans les bibliothèques de l'université Rennes 2
 
Utiliser les API/webservices de l'Abes
Utiliser les API/webservices de l'AbesUtiliser les API/webservices de l'Abes
Utiliser les API/webservices de l'Abes
 
2010 10 08_angd_aussois_cdcf
2010 10 08_angd_aussois_cdcf2010 10 08_angd_aussois_cdcf
2010 10 08_angd_aussois_cdcf
 
Une application mobile avec les webservices Koha
Une application mobile avec les webservices KohaUne application mobile avec les webservices Koha
Une application mobile avec les webservices Koha
 
Concevoir une bibliothèque numérique avec Omeka
Concevoir une bibliothèque numérique avec OmekaConcevoir une bibliothèque numérique avec Omeka
Concevoir une bibliothèque numérique avec Omeka
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
 
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
 
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-201518 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
 
2014 03 atelier-xml-tei-stage-ecdotique-institut-sources-chretiennes-hisoma
2014 03 atelier-xml-tei-stage-ecdotique-institut-sources-chretiennes-hisoma2014 03 atelier-xml-tei-stage-ecdotique-institut-sources-chretiennes-hisoma
2014 03 atelier-xml-tei-stage-ecdotique-institut-sources-chretiennes-hisoma
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Semelhante a From 0 to 60 in SPARQL in 50 Minutes

NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandra
rantav
 
ESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic Web
ESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic WebESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic Web
ESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic Web
eswcsummerschool
 
Staab programming thesemanticweb
Staab programming thesemanticwebStaab programming thesemanticweb
Staab programming thesemanticweb
Aneta Tu
 
Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...
Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...
Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...
Jean-Paul Calbimonte
 
MongoDB Advanced Topics
MongoDB Advanced TopicsMongoDB Advanced Topics
MongoDB Advanced Topics
César Rodas
 

Semelhante a From 0 to 60 in SPARQL in 50 Minutes (20)

NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandra
 
ESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic Web
ESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic WebESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic Web
ESWC SS 2013 - Tuesday Keynote Steffen Staab: Programming the Semantic Web
 
Staab programming thesemanticweb
Staab programming thesemanticwebStaab programming thesemanticweb
Staab programming thesemanticweb
 
Solr & Lucene at Etsy
Solr & Lucene at EtsySolr & Lucene at Etsy
Solr & Lucene at Etsy
 
Solr and Lucene at Etsy - By Gregg Donovan
Solr and Lucene at Etsy - By Gregg DonovanSolr and Lucene at Etsy - By Gregg Donovan
Solr and Lucene at Etsy - By Gregg Donovan
 
Programming the Semantic Web
Programming the Semantic WebProgramming the Semantic Web
Programming the Semantic Web
 
Test-driven development: a case study
Test-driven development: a case studyTest-driven development: a case study
Test-driven development: a case study
 
Fazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearchFazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearch
 
Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...
Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...
Tutorial ESWC2011 Building Semantic Sensor Web - 04 - Querying_semantic_strea...
 
MongoDB Advanced Topics
MongoDB Advanced TopicsMongoDB Advanced Topics
MongoDB Advanced Topics
 
The Ring programming language version 1.2 book - Part 80 of 84
The Ring programming language version 1.2 book - Part 80 of 84The Ring programming language version 1.2 book - Part 80 of 84
The Ring programming language version 1.2 book - Part 80 of 84
 
Profiling Ruby
Profiling RubyProfiling Ruby
Profiling Ruby
 
Hands On Spring Data
Hands On Spring DataHands On Spring Data
Hands On Spring Data
 
Clojure: Simple By Design
Clojure: Simple By DesignClojure: Simple By Design
Clojure: Simple By Design
 
Two graph data models : RDF and Property Graphs
Two graph data models : RDF and Property GraphsTwo graph data models : RDF and Property Graphs
Two graph data models : RDF and Property Graphs
 
GraphConnect Europe 2016 - Importing Data - Mark Needham, Michael Hunger
GraphConnect Europe 2016 - Importing Data - Mark Needham, Michael HungerGraphConnect Europe 2016 - Importing Data - Mark Needham, Michael Hunger
GraphConnect Europe 2016 - Importing Data - Mark Needham, Michael Hunger
 
JSON and the APInauts
JSON and the APInautsJSON and the APInauts
JSON and the APInauts
 
Angular2 for Beginners
Angular2 for BeginnersAngular2 for Beginners
Angular2 for Beginners
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 

Mais de ewg118

XForms workshop slides
XForms workshop slidesXForms workshop slides
XForms workshop slides
ewg118
 
xEAC: XForms for EAC-CPF
xEAC: XForms for EAC-CPFxEAC: XForms for EAC-CPF
xEAC: XForms for EAC-CPF
ewg118
 
Linking Roman Coins: CAA2012
Linking Roman Coins: CAA2012Linking Roman Coins: CAA2012
Linking Roman Coins: CAA2012
ewg118
 

Mais de ewg118 (11)

LOD for Numismatic LAM Integration
LOD for Numismatic LAM IntegrationLOD for Numismatic LAM Integration
LOD for Numismatic LAM Integration
 
Integrating Geographic Linked Data
Integrating Geographic Linked DataIntegrating Geographic Linked Data
Integrating Geographic Linked Data
 
XForms workshop slides
XForms workshop slidesXForms workshop slides
XForms workshop slides
 
Linking Lives, Linking Data
Linking Lives, Linking DataLinking Lives, Linking Data
Linking Lives, Linking Data
 
xEAC: XForms for EAC-CPF
xEAC: XForms for EAC-CPFxEAC: XForms for EAC-CPF
xEAC: XForms for EAC-CPF
 
Linked Open Pottery
Linked Open PotteryLinked Open Pottery
Linked Open Pottery
 
Roman Imperial Social Network and other things
Roman Imperial Social Network and other thingsRoman Imperial Social Network and other things
Roman Imperial Social Network and other things
 
Roman Republican Coinage Online: How does it work?
Roman Republican Coinage Online: How does it work?Roman Republican Coinage Online: How does it work?
Roman Republican Coinage Online: How does it work?
 
Numismatic Linked Open Data and Geographic Analysis
Numismatic Linked Open Data and Geographic AnalysisNumismatic Linked Open Data and Geographic Analysis
Numismatic Linked Open Data and Geographic Analysis
 
Building Interlinked Prosopographies: A New Approach
Building Interlinked Prosopographies: A New ApproachBuilding Interlinked Prosopographies: A New Approach
Building Interlinked Prosopographies: A New Approach
 
Linking Roman Coins: CAA2012
Linking Roman Coins: CAA2012Linking Roman Coins: CAA2012
Linking Roman Coins: CAA2012
 

Último

Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
HyderabadDolls
 
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
HyderabadDolls
 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
gajnagarg
 
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
gajnagarg
 
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
gajnagarg
 
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
nirzagarg
 
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
nirzagarg
 
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
nirzagarg
 
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
nirzagarg
 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
gajnagarg
 
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
HyderabadDolls
 

Último (20)

Digital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham WareDigital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham Ware
 
Top Call Girls in Balaghat 9332606886Call Girls Advance Cash On Delivery Ser...
Top Call Girls in Balaghat  9332606886Call Girls Advance Cash On Delivery Ser...Top Call Girls in Balaghat  9332606886Call Girls Advance Cash On Delivery Ser...
Top Call Girls in Balaghat 9332606886Call Girls Advance Cash On Delivery Ser...
 
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
 
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
 
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
 
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
 
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
 
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
 
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
 
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
 
Predicting HDB Resale Prices - Conducting Linear Regression Analysis With Orange
Predicting HDB Resale Prices - Conducting Linear Regression Analysis With OrangePredicting HDB Resale Prices - Conducting Linear Regression Analysis With Orange
Predicting HDB Resale Prices - Conducting Linear Regression Analysis With Orange
 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
 
Statistics notes ,it includes mean to index numbers
Statistics notes ,it includes mean to index numbersStatistics notes ,it includes mean to index numbers
Statistics notes ,it includes mean to index numbers
 
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24  Building Real-Time Pipelines With FLaNKDATA SUMMIT 24  Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
 
7. Epi of Chronic respiratory diseases.ppt
7. Epi of Chronic respiratory diseases.ppt7. Epi of Chronic respiratory diseases.ppt
7. Epi of Chronic respiratory diseases.ppt
 
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
 
Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...
Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...
Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...
 

From 0 to 60 in SPARQL in 50 Minutes

  • 1. 0 to 60 on SPARQL queries in 50 minutes Ethan Gruber American Numismatic Society gruber@numismatics.org @ewg118
  • 2. Some URLs Blog post with list of SPARQL queries in Gist (including slideshow link) http://bit.ly/1PGneCf Online Coins of the Roman Empire (OCRE) http://numismatics.org/ocre/ Coinage of the Roman Republic Online (CRRO) http://numismatics.org/crro/ Nomisma.org http://nomisma.org/ Google Fusion Tables: http://tables.googlelabs.com/
  • 4. <http://nomisma.org/id/denarius> skos:prefLabel “Denarius”@en ; rdf:type nmo:Denomination ; skos:exactMatch <http://vocab.getty.edu/aat/300037266> . Denarius as Triples
  • 5.
  • 6. What is a coin type? Material: silver Manufacture: struck Mint: Emerita Denomination: Denarius Authority: Augustus Legend Icononography
  • 7. Defining concepts on nomisma.org Material: http://nomisma.org/id/ar Manufacture: http://nomisma.org/id/struck Mint: http://nomisma.org/id/emerita Denomination: http://nomisma.org/id/denarius Authority: http://nomisma.org/id/augustus Legend: “Literal” Icononography: “Literal”
  • 8. A coin type URI: http://numismatics.org/ocre/id/ric.1(2).aug.4B Coin: http://numismatics.org/collection/1948.19.1029 Title, collection, accession number Physical attributes Image URLs Findspot http://collection.britishmuseum.org/id/object/CGR219958 http://www.smb.museum/ikmk/object.php?id=18207658 Hoard: http://numismatics.org/chrr/id/ZAR Title, publisher Findspot
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. ● Basic intro to SPARQL syntax ● Filtering/sorting ● Dealing with numbers ● OPTIONAL matches ● Merging with UNION ● Geographic queries ● Visualization with Google Fusion Tables
  • 14. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX ecrm: <http://erlangen-crm.org/current/> PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX nm: <http://nomisma.org/id/> PREFIX nmo: <http://nomisma.org/ontology#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT * WHERE { ?s ?p ?o } LIMIT 100 http://nomisma.org/sparql
  • 15. ?s ?p ?o ?s = Subject ?p = Predicate (also, property) ?o = Object SELECT ?label WHERE { <http://nomisma.org/id/rome> <http://www.w3.org/2004/02/skos/core#prefLabel> ?label } Purpose: get a list of preferred labels for the concept of “Rome.” See http://nomisma.org/id/rome for all available properties https://gist.github.com/ewg118/a5a2de372a7734a090ad#file-rome_labels
  • 17. PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX nm: <http://nomisma.org/id/> Prefixes: Shortcuts for expressing URIs SELECT ?label WHERE { nm:rome skos:prefLabel ?label }
  • 18. Increasing query complexity SELECT ?label ?type ?field ?lat ?long WHERE { nm:rome skos:prefLabel ?label . nm:rome rdf:type ?type . nm:rome dcterms:isPartOf ?field . nm:rome geo:location ?loc . ?loc geo:lat ?lat . ?loc geo:long ?long } Get labels, RDF type (class), field of numismatics, latitude, and longitude https://gist.github.com/ewg118/3c55da72510cae200f93 SELECT ?label ?type ?field ?lat ?long WHERE { nm:rome skos:prefLabel ?label ; rdf:type ?type ; dcterms:isPartOf ?field ; geo:location ?loc . ?loc geo:lat ?lat ; geo:long ?long } Using semicolons to simplify queries on the same Subject
  • 19. Sorting and Filtering SELECT ?label WHERE { nm:rome skos:prefLabel ?label } ORDER BY ASC(xsd:string(?label)) Order by string ?label in ascending (ASC) alphabetical order (DESC for descending) https://gist.github.com/ewg118/00be8e5671a795a147ed SELECT ?label WHERE { nm:rome skos:prefLabel ?label . FILTER langMatches( lang(?label), "en" ) } Filter only for English labels https://gist.github.com/ewg118/8161a9e118f3b8803a97
  • 20. Broadening our queries SELECT ?mints WHERE { ?mints a nmo:Mint } Get all URIs that are defined as a “mint” in nomisma.org: http://nomisma.org/ontology#Mint Note: 'a' is equivalent to 'rdf:type' https://gist.github.com/ewg118/5e94523486541f3d89e2
  • 21. Visualizing Greek Coin Production SELECT ?label ?lat ?long WHERE { ?mints a nmo:Mint ; skos:prefLabel ?label ; dcterms:isPartOf nm:greek_numismatics ; geo:location ?loc . ?loc geo:lat ?lat ; geo:long ?long FILTER langMatches( lang(?label), "en" ) } Get all mints that are part of Greek numismatics and display the English label, latitude, and longitude https://gist.github.com/ewg118/7eb155ed89f04219af0f Drops right into Google Fusion Tables!
  • 22. Let's add complexity: Querying Roman Republican Coins A Coin Type: RRC 273/1 From Michael Crawford's Roman Republican Coinage (1974) http://numismatics.org/crro/id/rrc-273.1
  • 23. PREFIX crro:<http://numismatics.org/crro/id/> SELECT * WHERE { ?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ; a ?type } Let's get all associated URIs and their type. nmo:hasTypeSeriesItem: a URI linking to a reference in a type corpus https://gist.github.com/ewg118/e5be0d3b8c3f6c262432
  • 24. PREFIX crro:<http://numismatics.org/crro/id/> SELECT ?objects ?weight WHERE { ?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ; nmo:hasWeight ?weight } PREFIX crro:<http://numismatics.org/crro/id/> SELECT ?objects ?diameter ?weight WHERE { ?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ; nmo:hasWeight ?weight ; nmo:hasDiameter ?diameter } Get all of the objects of the coin type RRC 273/1 and display weight/diameter https://gist.github.com/ewg118/55f16a2a96521d6e6768
  • 25. SELECT ?objects ?title ?diameter ?weight ?depiction WHERE { ?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ; a nmo:NumismaticObject ; dcterms:title ?title . OPTIONAL { ?objects nmo:hasWeight ?weight } OPTIONAL { ?objects nmo:hasDiameter ?diameter } OPTIONAL { ?objects foaf:depiction ?depiction } } Optional values Get URIs of RRC 273/1 which are coins. Get the title and optional weight, diameter, and image https://gist.github.com/ewg118/9fdcbc32ffa07c7a5f42
  • 26. SELECT (AVG(xsd:decimal(?weight)) AS ?avgWeight) WHERE { ?objects nmo:hasTypeSeriesItem crro:rrc-273.1 ; nmo:hasWeight ?weight } Average Values What is this doing? 1.Casts ?weight as decimal number 2.Averages these numbers 3.Calls the new variable ?avgWeight https://gist.github.com/ewg118/c059341524d187c76185
  • 27. Digging Deeper into the Graph SELECT * WHERE { ?types nmo:hasMaterial nm:ar ; dcterms:source nm:rrc } SELECT ?objects WHERE { ?types nmo:hasMaterial nm:ar ; dcterms:source nm:rrc . ?objects nmo:hasTypeSeriesItem ?types ; a nmo:NumismaticObject } LIMIT 100 All silver coin types from Roman Republican Coinage https://gist.github.com/ewg118/b7530d6f9156ea2b2f42 All silver Republican coins https://gist.github.com/ewg118/9500a604b2117698caae
  • 28. Extending Queries with UNION SELECT ?objects WHERE { { ?types nmo:hasMaterial nm:ar } UNION { ?types nmo:hasMaterial nm:av } ?types dcterms:source nm:rrc . ?objects nmo:hasTypeSeriesItem ?types ; a nmo:NumismaticObject } LIMIT 100 Gather all Republican types that are silver and gold and list specimens https://gist.github.com/ewg118/8ff575266b7dd1faf114
  • 29. SELECT (count(?objects) as ?count) WHERE { ?types nmo:hasMaterial nm:ar ; dcterms:source nm:rrc . ?objects nmo:hasTypeSeriesItem ?types ; a nmo:NumismaticObject } SELECT ?label (count(?mint) as ?count) WHERE { ?types nmo:hasMaterial nm:ar ; dcterms:source nm:rrc ; nmo:hasMint ?mint . ?mint skos:prefLabel ?label . FILTER langMatches(lang(?label), "en") } GROUP BY ?label ORDER by ASC(?label) Above: a count of all silver coins. Below: a count/order by mint Counting https://gist.github.com/ewg118/cb603f187f065acf1535 (above) https://gist.github.com/ewg118/c854c94c3ed8fd0af898 (below)
  • 30. Doing more with geography SELECT DISTINCT ?object ?type ?findspot ?lat ?long ?name WHERE { ?coinType nmo:hasMaterial nm:ar ; dcterms:source nm:ric . { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; nmo:hasFindspot ?findspot } UNION { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; dcterms:isPartOf ?hoard . ?hoard nmo:hasFindspot ?findspot } UNION { ?contents nmo:hasTypeSeriesItem ?coinType ; a dcmitype:Collection . ?object dcterms:tableOfContents ?contents ; nmo:hasFindspot ?findspot } ?object a ?type . ?findspot geo:lat ?lat . ?findspot geo:long ?long . OPTIONAL { ?findspot foaf:name ?name } } Gather a union of all coins with explicit findspots, findspots derived from hoards, and a list of hoards that are connected to silver coin types. Display findspot data. https://gist.github.com/ewg118/c1fb8ba5c5609d260205
  • 31. SELECT DISTINCT ?findspot ?lat ?long ?name WHERE { ?coinType nmo:hasMaterial nm:ar ; dcterms:source nm:ric . { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; nmo:hasFindspot ?findspot } UNION { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; dcterms:isPartOf ?hoard . ?hoard nmo:hasFindspot ?findspot } UNION { ?contents nmo:hasTypeSeriesItem ?coinType ; a dcmitype:Collection . ?object dcterms:tableOfContents ?contents ; nmo:hasFindspot ?findspot } ?object a ?type . ?findspot geo:lat ?lat . ?findspot geo:long ?long . OPTIONAL { ?findspot foaf:name ?name } } Distinct Findspots Only https://gist.github.com/ewg118/2dc16c250e77a0996e28
  • 32. Filtering By Date SELECT DISTINCT ?object ?type ?findspot ?lat ?long ?name ?closingDate WHERE { ?coinType nmo:hasDenomination nm:denarius ; nmo:hasEndDate ?date . FILTER ( ?date >= "-0100"^^xsd:gYear && ?date <= "-0050"^^xsd:gYear ) . { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; nmo:hasFindspot ?findspot } UNION { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; dcterms:isPartOf ?hoard . ?hoard nmo:hasFindspot ?findspot } UNION { ?contents nmo:hasTypeSeriesItem ?coinType ; a dcmitype:Collection . ?object dcterms:tableOfContents ?contents ; nmo:hasFindspot ?findspot } ?object a ?type . ?findspot geo:lat ?lat . ?findspot geo:long ?long . OPTIONAL { ?findspot foaf:name ?name } OPTIONAL { ?object nmo:hasClosingDate ?closingDate } } ORDER BY ?date https://gist.github.com/ewg118/0ce62502c1876844ca2a
  • 33. SELECT DISTINCT ?findspot ?lat ?long ?name WHERE { ?coinType nmo:hasMaterial nm:ar ; dcterms:source nm:ric . { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; nmo:hasFindspot ?findspot } UNION { ?object nmo:hasTypeSeriesItem ?coinType ; rdf:type nmo:NumismaticObject ; dcterms:isPartOf ?hoard . ?hoard nmo:hasFindspot ?findspot } UNION { ?contents nmo:hasTypeSeriesItem ?coinType ; a dcmitype:Collection . ?object dcterms:tableOfContents ?contents ; nmo:hasFindspot ?findspot } ?object a ?type . ?findspot geo:lat ?lat . ?findspot geo:long ?long . OPTIONAL { ?findspot foaf:name ?name } } Distinct Findspots Only https://gist.github.com/ewg118/2dc16c250e77a0996e28
  • 34. Filtering By Regular Expression SELECT DISTINCT ?coinTypeLabel ?mintLabel ?lat ?long ?date ?denominationLabel WHERE { ?coinType nmo:hasReverse ?reverse . ?reverse dcterms:description ?description FILTER regex(?description, "jupiter", "i") . ?coinType skos:prefLabel ?coinTypeLabel FILTER langMatches(lang(? coinTypeLabel), "en") . ?coinType nmo:hasMint ?mint . ?mint geo:location ?loc ; skos:prefLabel ?mintLabel FILTER langMatches(lang(?mintLabel), "en") . ?loc geo:lat ?lat ; geo:long ?long . ?coinType nmo:hasEndDate ?date FILTER (?date >= "0001"^^xsd:gYear) OPTIONAL { ?coinType nmo:hasDenomination ?denomination . ?denomination skos:prefLabel ?denominationLabel FILTER langMatches(lang(?denominationLabel), "en") } } ORDER BY ASC(?date) Get the geographic distribution of coins mentioning Jupiter on the reverse, after A.D. 1 https://gist.github.com/ewg118/f5e177c30fff5a282cb2
  • 35. Advanced Spatial Query SELECT DISTINCT ?hoard ?label ?lat ?long WHERE { ?loc spatial:nearby (37.974722 23.7225 50 'km') ; geo:lat ?lat ; geo:long ?long . ?hoard nmo:hasFindspot ?loc ; a nmo:Hoard OPTIONAL { ?hoard dcterms:title ?label } OPTIONAL { ?hoard skos:prefLabel ?label } } Get hoards found within 50 km of a lat and long (Athens) https://gist.github.com/ewg118/0bbf7e3c670f7394665f