gpt4 book ai didi

java - SPARQL 查询转义表情符号?

转载 作者:行者123 更新时间:2023-11-30 07:31:27 24 4
gpt4 key购买 nike

我正在使用 SPARQL 查询来提取有效的实例。

但是使用此查询,我还可以获得名称包含表情符号的实例(例如 http://ko.dbpedia.org/resource/😼 ),并且在迭代查询结果集时它给我一个错误。我怎样才能摆脱表情符号?

SELECT DISTINCT ?s WHERE {
?s ?p ?o

FILTER regex(str(?s), "^http://ko.dbpedia.org/resource")
}

ORDER BY DESC(?s)
limit 100

错误信息如下

Exception in thread "main" com.hp.hpl.jena.shared.JenaException: Convert results are FAILED.:virtuoso.jdbc4.VirtuosoException: Virtuoso Communications Link Failure (timeout) : malformed input around byte 34
at virtuoso.jena.driver.VirtuosoQueryExecution$VResultSet.moveForward(VirtuosoQueryExecution.java:498)
at virtuoso.jena.driver.VirtuosoQueryExecution$VResultSet.hasNext(VirtuosoQueryExecution.java:441)
at kr.ac.kaist.dm.BBox.TypeInference.LoadTriple.processTriples(LoadTriple.java:92)
at kr.ac.kaist.dm.BBox.TypeInference.TypeInferenceMain.main(TypeInferenceMain.java:110)

示例代码如下。

VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create(sparql, set);
ResultSet results = vqe.execSelect();

int i = 0;
while(results.hasNext()){ // <----- LoadTriple.java:92 here.
<小时/>

我刚刚在virtuoso-opensource issue #543上发布了这个问题的扩展版本.

<小时/>

我只是想逃离表情符号,而不是包含所有可能的字符,例如 "FILTER regex(?s, \"[a-zA-Z가-힣~!@#$%^&*()-_=+|'<>]+\") }"

最佳答案

ENCODE_FOR_URI() 应该有效:

FILTER regex(ENCODE_FOR_URI(str(?s)), "^http://ko.dbpedia.org/resource")

...尽管您还需要对正则表达式匹配字符串进行 URI 编码:

http%3A%2F%2Fko.dbpedia.org%2Fresource

关于java - SPARQL 查询转义表情符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36061852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com