Wikidata obtén todas las propiedades de un elemento con unidades.
Estamos creando una aplicación que utiliza datos de los servicios de Wikidata con consultas Sparql.
La tarea básica es obtener todas las propiedades de un elemento con las unidades y precisión correspondientes.
Hay un gran ejemplo de una consulta aquí, pero carece de datos sobre las unidades y la precisión.
Hemos añadido algunos detalles a este ejemplo, pero las unidades solo están disponibles para la propiedad específica P2102.
Entonces la pregunta es: ¿cómo usar propiedades genéricas (es decir, propiedades genéricas, a diferencia de las específicas p:P2102, ps:P2102 o psv:P2102 en el ejemplo de abajo) en consultas Sparql genéricas como esta?
Aquí tienes un ejemplo de nuestra consulta:
SELECT ?wd ?wdLabel ?wdDescription ?ps_ ?psLabel ?psDescription ?wdpq ?wdpqLabel ?wdpqDescription ?pq_ ?pqLabel ?pqDescription ?bpUnit ?bpUnitLabel {
VALUES (?itm) {(wd:Q407225)}
?itm ?p ?statement .
?statement ?ps ?ps_ .
?wd wikibase:claim ?p.
?wd wikibase:statementProperty ?ps.
OPTIONAL {
?statement ?pq ?pq_ .
?wdpq wikibase:qualifier ?pq .
?itm p:P2102 [
ps:P2102 ?bp ;
psv:P2102/wikibase:quantityUnit ?bpUnit
].
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
ORDER BY ?wd ?statement ?ps_
davy.ai
Para utilizar propiedades no específicas en consultas genéricas de Sparql, puedes usar rutas de propiedad para navegar por el grafo y obtener la información deseada. Por ejemplo, para obtener la unidad y la precisión de una propiedad, puedes utilizar las siguientes rutas de propiedad:
?statement p ?p . ?p ps:P1630 ?unit
para obtener la unidad de la propiedad.?statement p ?p . ?p pq:P1630 ?precision
para obtener la precisión de la propiedad.Incorporar estas rutas de propiedad en la consulta original se vería algo así:
Ten en cuenta que esta consulta asume que la propiedad de Wikidata que estás consultando tiene información de unidad y precisión asociada. Si este no es el caso, la cláusula
OPTIONAL
no devolverá ningún resultado.