Estoy tratando de consultar DBPedia para obtener una lista de propiedades relacionadas con una clase dada en la ontología, pero como las "etiquetas" legibles por humanos no siempre son claras, También me gustaría brindar un ejemplo de la base de datos. El problema es que, aunque quiero seleccionar todas las propiedades distintas, solo quiero un solo ejemplo de cada propiedad. Here's cómo mi consulta es sin capturar el ejemplo:Seleccionar algunas etiquetas distintas y algunas no distintas en SPARQL
SELECT DISTINCT ?prop ?title WHERE {
?thing ?prop [].
?thing a <http://dbpedia.org/ontology/Currency>.
?prop rdf:type rdf:Property.
?prop rdfs:label ?title.
} ORDER BY DESC(COUNT(DISTINCT ?thing))
LIMIT 100
Si cambio en this way, que comienza a recibir valores duplicados para prop:?
SELECT DISTINCT ?prop ?title ?example WHERE {
?thing ?prop ?example.
?thing a <http://dbpedia.org/ontology/Currency>.
?prop rdf:type rdf:Property.
?prop rdfs:label ?title.
} ORDER BY DESC(COUNT(DISTINCT ?thing))
LIMIT 100
estoy muy familiarizado con el uso de bases de datos y SPARQL consultas en general, por lo que no tengo claro cómo hacerlo. Idealmente, tendría algo como DISTINCT (? Prop)? Title? Example, que selecciona cada valor único para prop y devuelve su título y un ejemplo.
Esto funciona muy bien, pero es el GRUPO POR argumentos necesarios ? Lo he implementado con ORDER BY DESC (COUNT (¿DISTINCT?) Cosa) y parece funcionar todavía. ¿Hay alguna circunstancia en la que ORDER BY arroje resultados desagradables que el grupo no quiere? – Paul
@Paul Para ser una consulta válida, no se puede ORDENAR directamente por un agregado; esto no está permitido por la especificación SPARQL 1.1. Supuestamente, esta es una extensión de Virtuoso y hará que la consulta no sea portátil, es decir, no funcionará necesariamente en puntos finales que no sean Virtuoso. Por favor vea mi respuesta para formularios de consulta alternativos que deberían hacer lo mismo y ser portátiles – RobV