Example SPARQL queries that can help you list the classes in an ontology. List all classes PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT DISTINCT ?type WHERE { ?s a ?type. } Note: The SPARQL keyword a is a shortcut for the common predicate rdf:type, giving the class of a resource. List root classes SELECT ?directSub ?super WHERE { […]

Construct a graph giving ontology structure (the class hierarchy, properties, domains and ranges) CONSTRUCT { ?s ?p ?o . } WHERE { VALUES ?p { rdfs:subClassOf rdfs:subPropertyOf rdfs:domain rdfs:range} ?s ?p ?o } Note that when a reasoner is enabled classes may typically be inferred to be rdfs:subClassOf themselves and rdfs:subClassOf any parent class, not […]

Find all triples Use SELECT to signify you want to select certain information and WHERE to signify your conditions, restrictions, and filters. A LIMIT is used to avoid cracking the server on a large dataset. Find all same-subject triples by given subject By specifying only the subject in the pattern, we can return all triples […]

Return items with recorded date less than given date PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX web: <http://base22.com/ont/web#> SELECT * WHERE { ?subject dcterms:title ?title. ?subject dcterms:abstract ?abstract. ?subject web:publishDate ?publishDate. FILTER (?publishDate < “2016-09-28T19:19:02.982Z”^^xsd:dateTime) }   […]

Limit the number of results returned PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX bc: <http://www.base22.com/ontologies/2010/5/bc.owl#> SELECT * WHERE { ?subject bc:hasEmployer <http://www.base22.com/ontologies/2010/5/my-contacts.owl#IBM> . ?subject bc:hasBusinessEmail ?email . } LIMIT 5 The LIMIT keyword is used after the WHERE clause, followed by a numerical value. In this case, of course, only 5 results are returned. LIMIT is a solution […]

Find the person entries in Tim Berners-Lee’s FOAF file that do not contain a URL for the person’s FOAF file. Try this on ARQ. PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?name FROM <http://www.w3.org/People/Berners-Lee/card> WHERE { ?person a foaf:Person ; foaf:name ?name . MINUS { ?person rdfs:seeAlso ?url } }   […]

Retrieve the second page of names and emails of people in Tim Berners-Lee’s FOAF file, given that each page has 10 people. Try this on ARQ. PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?email FROM <http://www.w3.org/People/Berners-Lee/card> WHERE { { SELECT DISTINCT ?person ?name WHERE { ?person foaf:name ?name } ORDER BY ?name LIMIT 10 OFFSET 10 } OPTIONAL […]

Is the Amazon river longer than the Nile river? You can also try this one against DBPedia… PREFIX prop: <http://dbpedia.org/property/> ASK { <http://dbpedia.org/resource/Amazon_River> prop:length ?amazon . <http://dbpedia.org/resource/Nile> prop:length ?nile . FILTER(?amazon > ?nile) . } The answer is: false. Note: The WHERE keyword is optional–not only in ASK queries but in all SPARQL queries. Does […]

Here’s a SPARQL query that counts all statements (triples) in a repository. SELECT (COUNT(?s) AS ?triples) WHERE { ?s ?p ?o } Note that this can be a long running query. For me it took took 21 seconds to count the statements in a repository with 30 million triples. […]

Federate data from 2 endpoints Find the birth dates of all of the actors in Star Trek: The Motion Picture. Try this on ARQ. PREFIX movie: <http://data.linkedmdb.org/resource/movie/> PREFIX dbpedia: <http://dbpedia.org/ontology/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?actor_name ?birth_date FROM <http://www.w3.org/People/Berners-Lee/card> # placeholder graph WHERE { SERVICE <http://data.linkedmdb.org/sparql> { <http://data.linkedmdb.org/resource/film/675> movie:actor ?actor . ?actor movie:actor_name ?actor_name } SERVICE […]