我使用SPARQL查询法语dbpedia(http://fr.dbpedia.org/)。
如果它有任何区别,我正在使用Python和SPARQLWrapper。
第一个查询工作正常。
PREFIX dbpp:<http://dbpedia.org/property/>
PREFIX dbpo:<http://dbpedia.org/ontology/>
PREFIX dbpr:<http://dbpedia.org/resource/>
SELECT ?wt ?summary ?source_url
WHERE {
?wt rdfs:label "Concerto"@fr .
OPTIONAL { ?wt dbpedia-owl:abstract ?summary . }
OPTIONAL { ?wt foaf:isPrimaryTopicOf ?source_url . }
filter (lang(?summary) = "fr" )
}
此第二个查询不起作用。
PREFIX dbpp:<http://dbpedia.org/property/>
PREFIX dbpo:<http://dbpedia.org/ontology/>
PREFIX dbpr:<http://dbpedia.org/resource/>
SELECT ?wt ?summary ?source_url
WHERE {
?wt rdfs:label "Opéra"@fr .
OPTIONAL { ?wt dbpedia-owl:abstract ?summary . }
OPTIONAL { ?wt foaf:isPrimaryTopicOf ?source_url . }
filter (lang(?summary) = "fr" )
}
唯一的区别是标签的价值。页面http://fr.dbpedia.org/page/Opéra
存在于dbpedia中,rdfs标签设置为“Opéra”。
我认为查询不起作用,因为它包含法语字母é
。我尝试过多次转义(Op%C3%A9re
,Op\u0233ra
,Op\xe9ra
)但没有成功。
有什么想法吗?
答案 0 :(得分:2)
问题是FILTER
不是可选的。因此它与<http://fr.dbpedia.org/resource/Opéra>
不匹配,dbpedia-owl:abstract
没有PREFIX dbpp: <http://dbpedia.org/property/>
PREFIX dbpo: <http://dbpedia.org/ontology/>
PREFIX dbpr: <http://dbpedia.org/resource/>
SELECT ?wt ?summary ?source_url
WHERE {
?wt rdfs:label "Opéra"@fr .
OPTIONAL { ?wt dbpedia-owl:abstract ?summary .
filter (lang(?summary) = "fr" )
}
OPTIONAL { ?wt foaf:isPrimaryTopicOf ?source_url . }
}
。
<http://fr.dbpedia.org/resource/Catégorie:Opéra>
...工作(并返回{{1}})。