Sto cercando di recuperare le proprietà più specifiche per una classe e sono bloccato. Voglio estrarre tutte le proprietà valide per una determinata classe (comprese quelle ereditate dalle superclassi), eccetto quelle proprietà che hanno sottoproprietà nel set di risultati.SPARQL: Ottieni "proprietà più specifiche"
Per esempio, se ho una classe Popolazione con una delle sue proprietà essere atLocation, e una sottoclasse di Popolazione chiamato Rifugiati. I rifugiati hanno una proprietà currentLocation, che è una sottoprietà di atLocation.
Quindi quello che voglio è una query generica che mi darebbe soloatLocation se ho messo in Popolazione, e soloCurrentLocation se ho messo in Rifugiati. Quello che ho è questa:
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix ex: <http://example.org/vocabulary#>
SELECT DISTINCT ?prop WHERE {
ex:Refugee rdfs:subClassOf* ?domain .
?prop rdfs:domain ?domain .
?subprop rdfs:domain ?domain .
FILTER NOT EXISTS { ?subprop rdfs:subPropertyOf ?prop . }
} ORDER BY ?prop
Questo mi dà sia atLocationeCurrentLocation, però.
Questo è possibile in una sola query? Qualche idea su come risolvere questo apprezzato!
La stessa domanda ha anche pubblicato (e risposto) sulla mailinglist sparql-dev di W3C, vedere http://lists.w3.org/Archives/Public/public-sparql-dev/2012JulSep/0017.html –