如何从DBPedia中检索带有标点符号的人名?

时间:2015-06-01 14:31:15

标签: r uri sparql dbpedia

我目前正在使用R中的SPARQL包查询DBPedia的人名列表。当我通过SPARQL检索名称列表时,出现了一些问题,即URI形式的某些名称包含标点符号(例如","或"(")无法被SPARQL查询识别,例如:

   endpoint="http://de.dbpedia.org/sparql"
   query= "SELECT COUNT (*){
   dbpedia-de:Johannes_Aurifaber_(Vimariensis) ?p ?o
   }"
   qd=SPARQL(endpoint,query)

事实证明这是一个错误: XML内容似乎不是XML:' Virtuoso 37000错误SP030:SPARQL编译器,第3行:Vimariensis的语法错误'之前')' 。 但是,如果我将查询更改为:

    endpoint="http://de.dbpedia.org/sparql"
    query= "SELECT COUNT (*){
    <http://de.dbpedia.org/resource/Johannes_Aurifaber_(Vimariensis)> ?p ?o 
    }"
    qd=SPARQL(endpoint,query)

一切都很顺利。但有没有办法修改第一个查询,因为查询人名列表更方便。

1 个答案:

答案 0 :(得分:5)

您应该能够将\置于特殊字符之前,并且它是有效的SPARQL查询。这是一个有效的SPARQL查询:

SELECT (count(*) as ?count)
where {
    dbpedia-de:Johannes_Aurifaber_\(Vimariensis\)  ?p ?o 
}

enter image description here 但是,每个端点都有一些特定的限制。因此,(根据约书亚的评论),Virtuoso只允许许多不合法的事情,并且不接受任何合法的事情。