2016-07-28 4 views
1

Я пытаюсь получить только английские значения и, вероятно, целые числа из dbpedia. Например, следующий запрос SPARQLПолучить только английские значения и целые числа от dbpedia

PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX dc: <http://purl.org/dc/elements/1.1/> 
PREFIX dbr: <http://dbpedia.org/resource/> 
PREFIX dbpedia2: <http://dbpedia.org/property/> 
PREFIX dbpedia: <http://dbpedia.org/> 
PREFIX skos: <http://www.w3.org/2004/02/skos/core#> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
select distinct ?p ?o where { 
dbr:Cristiano_Ronaldo ?p ?o 
filter(langMatches(lang(?o),'en'))} 
} 

Он правильно возвращает английские значения. Однако пропущенные важные детали, такие как дата рождения, высота, количество шапок и т. Д., Пропущены, потому что они целые. Как сделать набор результатов RDF, который состоит из надлежащего набора информации о Криштиану Роналду?

ответ

2
PREFIX dbr: <http://dbpedia.org/resource/> 
SELECT DISTINCT ?p ?o where { 
    dbr:Cristiano_Ronaldo ?p ?o 
    BIND(datatype(?o) as ?dt) 
    FILTER(IF(isliteral(?o) && !bound(?dt), langMatches(lang(?o),'en'), true)) 
} 
+0

Это дает мне всю RDF. Ничто не отфильтровано. – starry

+0

Ах, извините. Теперь лучше? Он возвращает все, но для строковых литералов только английские. – AKSW