首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Jena上使用bif:regexp_match进行SPARQL查询

如何在Jena上使用bif:regexp_match进行SPARQL查询
EN

Stack Overflow用户
提问于 2015-09-16 14:04:11
回答 5查看 1K关注 0票数 1

我对Virtuoso有以下SPARQL查询:

代码语言:javascript
运行
复制
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT DISTINCT ?p, ?title WHERE {
   ?p a ?c.
   ?c rdfs:subClassOf* wd:Q2431196.
   ?p rdfs:label ?title .
   FILTER (bif:regexp_match("^Vamp( [(].*[)])?$", ?title))
}

这个SPARQL端点上,它工作得很好。它返回电视节目Vamp和Vamp (电视节目)如预期。

现在,我尝试在Java上使用Jena API进行同样的操作,它失败了,如下所示。

线程"main“com.hp.hpl.jena.query.QueryParseException中的异常:第10行,第204列:未解析前缀名称: bif:regexp_match

我找到了一个解决方案,可以像bif:contains所建议的那样,处理Jena异常。然后查询如下:

代码语言:javascript
运行
复制
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT DISTINCT ?p, ?title WHERE {
   ?p a ?c.
   ?c rdfs:subClassOf* wd:Q2431196.
   ?p rdfs:label ?title .
   ?title <bif:regexp_match> "^Vamp( [(].*[)])?$"
}

但是,该查询不像以前的查询那样返回任何元素。它也不返回SPARQL端点web接口上的任何元素(与前面的查询一样)

我做错了什么吗?我怎样才能正确地判断它呢?

ps:使用FILTER REGEX( ?title, "^Vamp( [(].*[)])?$")在web端点上工作,但在Java/Jena上引发以下错误:

2015年9月16日下午3: 16 :32 PM org.apache.jena.riot.system.ErrorHandlerFactory$ErrorLogger logError logError:3字节UTF-8序列无效字节2

认为这个错误与( )字符有关。

EN

回答 5

Stack Overflow用户

发布于 2016-08-29 12:36:42

使用此PREFIX bif:<bif:>

而不是PREFIX bif:<>代替了耶拿。

票数 2
EN

Stack Overflow用户

发布于 2015-09-16 14:27:06

您在regex模式中是正确的,只是在java方面进行了一些编辑。

要让它在java中工作,只需将左括号(在^后面,右括号)放在$之前。

regex模式应该如下所示:

"^(Vamp( (.*))?)$";

希望这能帮上忙

票数 1
EN

Stack Overflow用户

发布于 2021-10-13 15:13:30

您可以使用以下前缀声明作为解决办法。

代码语言:javascript
运行
复制
PREFIX bif: <bif:>

现场链接演示了工作中的变通方法。

查询编辑器链接展示解决方案。

最终,前缀声明的URI应该是:

代码语言:javascript
运行
复制
PREFIX bif: <http://www.openlinksw.com/schemas/bif#> 

我在Twitter线程中解释了同样的问题,即我们正在努力纠正与上述标准前缀声明相关联的回归。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32610878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档