Dan Brickley experiments with using SPARQL queries to check on the vocabularies used in an RDF file.
Here’s a query that checks my FOAF file for properties that are in the FOAF namespace, but not declared in the FOAF RDFS file.
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?property
FROM <http://richard.cyganiak.de/foaf.rdf>
FROM NAMED foaf:
WHERE {
?s ?property ?o
GRAPH foaf: {
OPTIONAL {
?property a ?t
FILTER (?t = owl:ObjectProperty || ?t = owl:DatatypeProperty
|| ?t = rdf:Property || ?t = owl:FunctionalProperty
|| ?t = owl:InverseFunctionalProperty)
}
}
FILTER (!BOUND(?t))
FILTER (REGEX(STR(?property), "^http://xmlns\\.com/foaf/0\\.1/"))
}
This query actually finds some stuff — here are the results as of today:
------------------------- | property | ========================= | foaf:withOrganization | | foaf:hpmepage | | foaf:linkedWith | -------------------------
One’s a typo, and I’ve no idea how I got the idea that the other two were in FOAF.
SPARQL: SPellchecker And RDF Query Language!