SPARQL Examples
Example SPARQL Queries
Find PID for phaseCode
select ?pid from <#ri> where { ?pid <http://dev.llgc.org.uk/digitisation/identifiers/phaseCode> "ACCWP060" . }
Find PID for original file name
select ?pid from <#ri> where { ?pid <http://dev.llgc.org.uk/digitisation/identifiers/original_name> "pjs00001" . }
Find PID for Project code
select ?pid from <#ri> where { ?pid <http://dev.llgc.org.uk/digitisation/identifiers/projectCode> "PJS" . }
Find PID for Catalogue record
select ?pid from <#ri> where { ?pid <http://dev.llgc.org.uk/digitisation/identifiers/catalogue> "vtls004432228" . }
Find PIDs and original file names
select ?pid ?original_name from <#ri> where { ?pid <http://dev.llgc.org.uk/digitisation/identifiers/projectCode> "ILW" . ?pid <http://dev.llgc.org.uk/digitisation/identifiers/original_name> ?original_name . }
Find PhaseCode, PID and Title from DC datastream when Phase code starts with PJS
select ?phase ?pid ?title from <#ri> where { ?pid <http://dev.llgc.org.uk/digitisation/identifiers/phaseCode> ?phase . FILTER(contains(?phase, 'PJS')) ?pid <dc:title> ?title . }
Find PIDs with specific Rights assigned to object
select ?pid from <#ri> where { ?pid <http://web.resource.org/cc/license> <http://creativecommons.org/licenses/by-nc-sa/4.0/> . }
These are mostly of use internally but may help others to see examples. These are mostly SPARQL 1.0 compliant as this is what Fedora 3.3 uses.
Find all Newspaper titles which aren't part of the Europeana colleciton
Had to run two sparql queries and diff the results:
Query to get all Newspaper titles:
select ?title ?code from <#ri> where { ?title <fedora-model:hasModel> <info:fedora/model:scif-newspapers-title> . ?title <http://dev.llgc.org.uk/digitisation/identifiers/nlw_id> ?code }order by ?code
Query to get all titles which are part of the europeana collection:
select ?title ?code from <#ri> where { ?title <fedora-model:hasModel> <info:fedora/model:scif-newspapers-title> . ?title <http://dev.llgc.org.uk/digitisation/identifiers/nlw_id> ?code . ?title <fedora-rels-ext:isMemberOfCollection> <info:fedora/collection:europeana-newspaper-title> }order by ?code
Query to find fedora sdefs and bdeps for pid:
select $model $sdef $sdep from <#ri> where{ <info:fedora/llgc-id:2035358> <info:fedora/fedora-system:def/model#hasModel> $model . $model <info:fedora/fedora-system:def/model#hasService> $sdef . $sdep <info:fedora/fedora-system:def/model#isDeploymentOf> $sdef . $sdep <info:fedora/fedora-system:def/model#isContractorOf> $model }
Query to get wiki data back for images:
SELECT ?object ?objectLabel ?handle ?dateCreated ?creator ?creatorLabel ?creatorID ?dipictsLabel ?coords WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . } ?object wdt:P361 wd:Q21542493 . ?object wdt:P1184 ?handle . optional { ?object wdt:P170 ?creator optional { ?creator wdt:P214 ?creatorID} } optional { ?object wdt:P571 ?dateCreated } optional { ?object wdt:P180 ?dipicts . ?dipicts wdt:P625 ?coords } } order by ?handle
Note: label is created using fieldnameLabel the capital L is important in Label
Query to get back dipicts information including people and places:
SELECT ?object ?objectLabel ?handle ?id ?dateCreated ?creator ?creatorLabel ?creatorID ?typeLabel ?dipicts ?dipictsLabel ?coords WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . } ?object wdt:P361 wd:Q21651637 . optional { ?object wdt:P1184 ?handle } optional { ?object wdt:P217 ?id } optional { ?object wdt:P170 ?creator optional { ?creator wdt:P214 ?creatorID} } optional { ?object wdt:P571 ?dateCreated } optional { ?object wdt:P180 ?dipicts . ?dipicts wdt:P31 ?type optional { ?dipicts wdt:P625 ?coords } } } order by ?handle
--GlenRobson 10:18, 24 January 2017 (GMT)