Virtuoso Jena Provider对count的支持问题

本文解决使用Jena 3.4.0版本时执行SPARQL查询语句中count(distinct)出现的解析错误问题。通过回退至Jena 2.11.0版本成功解决了该问题,但需注意该版本处理日期数据时可能出现偏差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:执行count语句时报错(即使将count部分去掉括号,或者改为 count distinct ?x 或 count ?x 或 count(?x)依然会报类似的错误)
qstr:  select (count(distinct ?x) as ?cx) where { ?s <http://dbpedia.org/ontology/successor> ?x. }
Exception in thread "main"  com.hp.hpl.jena.query.QueryParseException : Encountered " "(" "( "" at line 1, column 8.
Was expecting one of:
    <VAR1> ...
    <VAR2> ...
    "distinct" ...
    "reduced" ...
    "*" ...
   
       at com.hp.hpl.jena.sparql.lang.ParserSPARQL.perform( ParserSPARQL.java:86 )
       at com.hp.hpl.jena.sparql.lang.ParserSPARQL.parse( ParserSPARQL.java:39 )
       at com.hp.hpl.jena.query.QueryFactory.parse( QueryFactory.java:129 )
       at com.hp.hpl.jena.query.QueryFactory.create( QueryFactory.java:72 )
       at com.hp.hpl.jena.query.QueryFactory.create( QueryFactory.java:43 )
       at com.hp.hpl.jena.query.QueryFactory.create( QueryFactory.java:31 )
       at ws.esrl.data.db.DBVirtuosoUtils.getPGranInT( DBVirtuosoUtils.java:36 )
       at ws.esrl.data.FeatureRaw.insertPGranInT( FeatureRaw.java:52 )
       at ws.esrl.data.FeatureRaw.main( FeatureRaw.java:29 )

猜测原因(尚未深究):
新版本jena(jena3.4.0, virt_jena2.jar, virtjdbc4.jar)对count的支持有问题;
解决方案:
回退到旧版本(jena2.11.0, virt_jena2.jar, virtjdbc4.jar)即可解决,但要注意此版本jena查询出的日期型数据会与原始数据存在偏差,该问题的具体修正方法见:  http://blog.youkuaiyun.com/xiao_xia_/article/details/78005047
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值