在SPARQL查询中转义特殊字符

7

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

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

以下是一个可用查询的示例:
SPARQL结果

问题在于当ARTICLE_NAME中存在特殊字符时,例如"Parma_F.C."中有"."时。

请注意,上面的链接是已经完成的查询。
select ?category { dbpedia:Parma_F.C. dcterms:subject ?category } 

错误

所以,我想问你们是否有人有解决方案。
先感谢您的帮助。


该页面显示了一个错误链接,无法访问。如果有人有解决方案,请提供帮助。
1个回答

8
标识符dbpedia:Parma_F.C.是所谓的“前缀名称”,即完整URI的简写形式。它的完整语法规则在SPARQL 1.1查询语言规范中有描述。
问题出在前缀名称末尾的句号。根据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 } 

谢谢你的回答。我尝试用完整的URI替换它,但仍然不起作用。请问你能否向我展示你是如何做到的呢?你能否通过dbpedia API粘贴一个链接给我吗?再次感谢。 - paskun
@JeenBroekstra 在完整的URI语法中需要转义哪些字符?我觉得应该是 <, >, \\,对吗? - phil294

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接