转义SPARQL查询中的特殊字符

时间:2014-11-09 16:06:14

标签: java sparql jena arq

我正在尝试使用Jena和ARQ查询dpbedia以获取某些维基百科文章的类别 例如:

select ?category { dbpedia:ARTICLE_NAME dcterms:subject ?category }  

以下是工作查询的示例
SPARQL results

问题是当ARTICLE_NAME中有特殊字符时,例如“Parma_F.C。”,其中有“。”

select ?category { dbpedia:Parma_F.C. dcterms:subject ?category } 

ERROR

所以,我想问你是否有人有解决方案。
提前致谢

1 个答案:

答案 0 :(得分:8)

标识符dbpedia:Parma_F.C.是所谓的前缀名称,即完整URI的缩写形式。它的完整语法规则在SPARQL 1.1 Query Language specification中描述。

问题特别是在前缀名称末尾的句号。根据SPARQL语法,除非转义,否则前缀名称不能以句号结束。修复只是使用反斜杠:

 dbpedia:Parma_F.C\. 

你也可以做一个替代方案,就是写出完整的URI。 dbpedia前缀映射到http://dbpedia.org/resource/命名空间,因此SPARQL中的完整URI将变为:

 <http://dbpedia.org/resource/Parma_F.C.>

并且完整查询将变为:

select ?category { <http://dbpedia.org/resource/Parma_F.C.> dcterms:subject ?category }