Estoy tratando de obtener las propiedades más específicas para una clase, y estoy atascado. Deseo extraer todas las propiedades que se aplican para una clase determinada (incluidas las heredadas de las superclases), , excepto aquellas propiedades que tienen subpropiedades en el conjunto de resultados.SPARQL: Obtenga la "propiedad más específica"
Por ejemplo, si tengo una clase Población con uno de sus propiedades de ser atLocation y una subclase de Población llamada refugiados. Refugees tiene una propiedad currentLocation, que es una subpropiedad de atLocation.
Así que lo que quiero es una consulta genérica que me sólo dioatLocation si pongo en Población y únicaCurrentLocation si pongo en refugiados. Lo que tengo es la siguiente:
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
Esto me da tanto atLocationyCurrentLocation, sin embargo.
¿Es esto posible en una consulta? ¡Cualquier idea sobre cómo resolver esto apreciada!
La misma pregunta también se publicó (y se respondió) en la lista de distribución W3C sparql-dev, consulte http://lists.w3.org/Archives/Public/public-sparql-dev/2012JulSep/0017.html –