OpenShift上的Fuseki:可以更新但不能选择

时间:2015-01-02 07:49:57

标签: openshift jena fuseki

我在OpenShift上安装了Jena Fuseki服务器。

--config services.ttl配置文件如下所示。

我观察到的是:

如果我从控制面板执行SPARQL更新,我得到Update Succeeded,并且一些TDB文件在服务器上发生了变化(./app-root/data/DB/中)。

然而,当我在控制面板中再次执行诸如SELECT ?s ?p ?o WHERE { ?s ?p ?o. }之类的SPARQL查询时,我得到了零回复。这个GET请求也是如此:

http://<obfuscated>.rhcloud.com/ds/query?query=SELECT+%3Fs+%3Fp+%3Fo+WHERE+{+%3Fs+%3Fp+%3Fo.+}&output=text&stylesheet=

OpenShift上的日志文件包含以下条目:

INFO  [24] GET http://<obfuscated>.rhcloud.com/ds/query?query=SELECT+%3Fs+%3Fp+%3Fo+WHERE+{+%3Fs+%3Fp+%3Fo.+}+&output=text&stylesheet=
INFO  [24] Query = SELECT ?s ?p ?o WHERE { ?s ?p ?o. } 
INFO  [24] exec/select
INFO  [24] 200 OK (2 ms) 

因此看起来好像RDF语句可以写入TDB而不能被检索。如果我在Fuseki的本地安装上尝试相同的问题,则不会出现问题。

在OpenShift上使用Fuseki诊断和解决此问题还能做些什么?

UPDATE 如果我将语句INSERT到指定的GRAPH(而不是默认图形),显然问题不会显现。

@prefix : <#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .

[] rdf:type fuseki:Server ;
  fuseki:services (
  <#service>
 ) .

[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .

<#service> a fuseki:Service ;
  fuseki:name "ds" ;
  fuseki:serviceQuery "sparql" ;
  fuseki:serviceQuery "query" ;
  fuseki:serviceUpdate "update" ;
  fuseki:serviceUpload "upload" ;
  fuseki:serviceReadWriteGraphStore "data" ;
  fuseki:dataset <#dataset> ;
.

<#dataset> a tdb:DatasetTDB ;
  tdb:location "../data/DB" ;
  tdb:unionDefaultGraph true ;
.

1 个答案:

答案 0 :(得分:0)

tdb:unionDefaultGraph true原来是罪魁祸首。来自documentation

  

汇编程序可以指定查询的默认图是联合   已命名的图表。这是通过添加tdb:unionDefaultGraph。

来完成的

由于这并未提及默认图形作为联合的一部分,我猜这个配置除了命名图形的并集之外没有默认图形,因此忽略了不命名图形的更新。

所描述的问题随备用配置tdb:unionDefaultGraph false而消失。