现象:执行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