在 SPARQL 中转义引号

问题描述 投票:0回答:1

如何转义此 SPARQL 查询中的引号?

SELECT * WHERE { <http://dbpedia.org/resource/Andre_\"Dede\"_Sabino> rdfs:label ?lbl . ?sub a foaf:Person . ?sub rdfs:label ?lbl . optional {?sub dbo:birthDate ?birthDate .} optional {?sub dbo:birthPlace ?birthPlace . ?birthPlace a dbo:Location } optional {?sub dbo:birthPlace ?birthPlace2 .} ?sub dbo:abstract ?abstract . filter(langMatches(lang(?lbl), "en")) filter(langMatches(lang(?abstract ), "en")) } LIMIT 10

我已经尝试过

""
\"
'

character-encoding sparql iri
1个回答
1
投票

IRI 中不允许使用引号字符 (

"
)(一般情况下,不仅仅是在 SPARQL 中)。它必须被百分比编码
%22

所以 IRI 不会

http://dbpedia.org/resource/Andre_"Dede"_Sabino

但是

http://dbpedia.org/resource/Andre_%22Dede%22_Sabino

(浏览器通常会在地址栏中显示 IRI 的未编码形式,但是在复制粘贴时,您应该获得百分比编码形式。)


如果您需要在 SPARQL 中的字符串值中包含引号字符,可以使用反斜杠对其进行编码:

?person schema:name "Andre \"Dede\" Sabino" .
© www.soinside.com 2019 - 2024. All rights reserved.