我是Jenna TDB和Fuseki的新手。我想将他们的数据生成器(版本1.7)生成的Lehigh University Benchmark(LUBM)数据加载到Fuseki中。这是大约400个.owl文件。使用Fuseki附带的以下配置文件进行推理:
<#service1> rdf:type fuseki:Service ;
fuseki:name "inf" ; # http://host/inf
fuseki:serviceQuery "sparql" ; # SPARQL query service
#fuseki:serviceUpdate "update" ;
fuseki:serviceReadWriteGraphStore "data" ;
# A separate read-only graph store endpoint:
fuseki:serviceReadGraphStore "get" ;
fuseki:dataset <#dataset> ;
.
<#dataset> rdf:type ja:RDFDataset ;
ja:defaultGraph <#model_inf> ;
.
<#model_inf> a ja:InfModel ;
ja:baseModel <#tdbGraph> ;
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
] .
<#tdbDataset> rdf:type tdb:DatasetTDB ;
tdb:location "myDB" ;
tdb:unionDefaultGraph true ;
.
<#tdbGraph> rdf:type tdb:GraphTDB ;
tdb:dataset <#tdbDataset> .
Fuseki开始没有任何问题。但是,当我执行以下命令时:
./s-put http://localhost:3030/inf/data default ~/Owl/univ-bench.owl
我收到错误:405 HTTP method PUT is not supported by this URL http://localhost:3030/inf/data?default
我有几个问题:
1.配置文件中的更新显然未被禁用,为什么我会收到此消息。
2.为了将所有400 .owl文件加载为一个图形显然我必须禁用更新并启用tdb:unionDefaultGraph true
(这在Fuseki附带的配置文件中提到)如果是这样的话我想把数据加载到Fuseki。
请让我知道我在这里缺少什么以及如何正确地做到这一点。
提前感谢您的帮助。
编辑:我发现您需要添加以下内容:
fuseki:serviceReadWriteGraphStore "data" ;
# A separate read-only graph store endpoint:
fuseki:serviceReadGraphStore "get" ;
为了能够使用s-put
加载数据,但是每次添加新文件时它都会覆盖前一个文件中的数据,因此推理不起作用。我在这做错了什么?如何正确加载数据,以便将所有文件加载到同一图表和推理工作?
修改 因此,我更深入地研究这个问题,我发现加载数据有两种方法。
您可以在配置文件中定义模型时添加以下内容:
ja:content [ja:externalContent <file://// Path_to_owl_file >] ;
所以对我来说,我在<#model_inf> a ja:InfModel ;
下添加了它。但是,如果你有400个文件真的很乏味。
您可以使用tdbloader2
单独加载数据,并将配置文件指向tdbload构建为数据库的目录。这也被描述为here
$ tdbloader2 --loc tdb PATH_TO_DIR_or_OWL_Files
目前的问题是,当我运行一个简单的查询,例如以下查询时,我得到一个内存不足错误。
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ub: <http://cs.uga.edu#>
SELECT *
WHERE
{
?X rdf:type ub:GraduateStudent .
?X ub:takesCourse <http://www.Department0.University0.edu/GraduateCourse0>
}
我将Fuseki-Server(在服务器脚本中)的内存增加到5GB,并且仍然会因此简单查询而出现内存不足错误。知道为什么会这样吗?
答案 0 :(得分:0)
s-put执行PUT - 定义为“替换内容”。
使用s-post添加到图表中。
LUBM在结构上足够简单,以至于(1)它不太现实,(2)推理可以单独应用于每所大学,并且在查询时加载数据,它已经全部扩展。