尝试在quads+triples文件上运行sparql查询,获得错误:com.bigdata.rdf.sparql.as



我正在使用Blazegraph数据库运行一个非常简单的查询。对于我的数据集,我有。ttl和。nq文件。我正在使用Blazegraph的批量数据加载器加载文件。以下是我的查询:

SELECT DISTINCT ?g 
WHERE {
GRAPH ?g { ?s ?p ?o }
}

我期望输出不同的图名。然而,这是我得到的错误:

java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.bigdata.rdf.sparql.ast.QuadsOperationInTriplesModeException: Use of WITH and GRAPH constructs in query body is not supported in triples mode.

在我的RWStore。属性,这里是设置的两个主要标志(还有更多,但这些是相关的):

com.bigdata.rdf.sail.truthMaintenance=false
com.bigdata.rdf.store.AbstractTripleStore.quads=true

这是我加载文件和运行jar的方式:

java -Xmx4g -cp /pathto/blazegraph.jar com.bigdata.rdf.store.DataLoader -verbose -namespace kb /pathto/RWStore.properties /pathto/data
java -server -Xmx4g -jar -Djetty.host=0.0.0.0 /pathto/blazegraph.jar

另外,这里有一些需要注意的事情:当我通过python (sparql.SPARQLServer.update(file))手动加载文件时,我能够运行相同的查询。我没有得到这个错误。

有人能帮我解决这个错误吗?我到处都找不到解决办法!

我找到解决办法了!问题是由于BulkDataLoader加载的文件格式不同。三元组没有命名图,而四元组有,所以在查询时,有一个不匹配,这是我的问题中的错误。如果您手动上传文件(通过工作台或python),则不会出现这种情况。

这些是我所做的修改:

  1. 两个属性文件,一个用于四元组,一个用于三元组。

quads.properties:

com.bigdata.rdf.store.AbstractTripleStore.quads=true
com.bigdata.rdf.store.AbstractTripleStore.statementIdentifiers=false

triples.properties:

com.bigdata.rdf.store.AbstractTripleStore.quads=false
com.bigdata.rdf.store.AbstractTripleStore.statementIdentifiers=false
  1. 使用BulkDataLoader时:

.nq文件:

java -Xmx4g -cp /pathto/blazegraph.jar com.bigdata.rdf.store.DataLoader -verbose -namespace kb /pathto/quads.properties /pathto/data

.ttl文件:

java -Xmx4g -cp /pathto/blazegraph.jar com.bigdata.rdf.store.DataLoader -verbose -defaultGraph http://ex.org -namespace kb /pathto/triples.properties /pathto/data

加载文件后启动Blazegraph:

java -server -Xmx4g -jar -Djetty.host=0.0.0.0 /pathto/blazegraph.jar

希望这有助于其他人面对类似的问题!

最新更新