2011-05-07 9 views
6

Estoy tratando de obtener el recurso que describe país Rumania por el nombre del país con esta consulta:Recuperando un recurso DBpedia por su nombre en cadena con SPARQL

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX : <http://dbpedia.org/resource/> 

SELECT DISTINCT ?x WHERE { 
    ?x foaf:name 'Romania' 
} 

SPARQL results

Sin embargo, no recupera nada . ¿Cómo puedo obtener el recurso http://dbpedia.org/resource/Romania (:Romania) por la cadena 'Romania'. Si quiero recuperar el nombre del país por el recurso país utilizo la siguiente consulta, que funciona bien:

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX : <http://dbpedia.org/resource/> 

SELECT DISTINCT ?x WHERE { 
    :Romania foaf:name ?x 
} 

SPARQL results

Respuesta

10

Esto debería hacerlo:

SELECT ?c 
WHERE { 
    ?c a dbo:Country ; 
    foaf:name "Romania"@en . 
    FILTER NOT EXISTS { ?c dbo:dissolutionYear ?y } 
} 

SPARQL results

La peculiaridad fundamental aquí es que "Romania" sin etiqueta de idioma es diferente de "Romania"@en. Y luego también tiene un montón de estados históricos que también se llamaron Rumania, por lo que filtramos cualquiera de los que tienen años de disolución. La información completa de DBpedia durante años de disolución no es excelente, pero todos los rumanos, al menos, están marcados.

+0

Gracias! Funcionó. –

+1

¡Genial! (Deberá marcar la respuesta como aceptada, para demostrar que.) –

+0

@glennmcdonald Curiosamente, algunos años más tarde, alguien ha utilizado la plantilla de Ficha de país en la página de Rumania, por lo que los resultados también incluyen [Commemorative_coins_of_Romania] (http: // DBpedia. org/resource/Commemorative_coins_of_Romania)! –

Cuestiones relacionadas