【发布时间】:2020-01-08 16:22:02
【问题描述】:
我想使用 Jena Fuseki 为一些本体文件构建一个 SPARQL 端点。 我的 fuseki 配置如下:
@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#> .
<#service1> rdf:type fuseki:Service ;
fuseki:name "ds" ; # http://host:port/ds
fuseki:serviceQuery "sparql" ; # SPARQL query service
fuseki:serviceQuery "query" ; # SPARQL query service (alt name)
fuseki:serviceUpdate "update" ; # SPARQL update service
fuseki:serviceUpload "upload" ; # Non-SPARQL upload service
fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph store protocol (read and write)
# A separate read-only graph store endpoint:
fuseki:serviceReadGraphStore "get" ; # SPARQL Graph store protocol (read only)
fuseki:dataset <#dataset> ;
.
<#dataset> rdf:type ja:RDFDataset ;
ja:defaultGraph <#inf_model> ;
.
<#mv_data_model> a ja:MemoryModel;
ja:content[ja:externalContent <file://D:/Program%20Files/d2rq-0.8.1/movie.nt>] ;
ja:content[ja:externalContent <file://D:/Program%20Files/apache-jena-fuseki-3.13.1/run/ontology.ttl>]
.
<#inf_model> a ja:InfModel ;
ja:baseModel <#mv_data_model>;
ja:reasoner [ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>] ;
#ja:reasoner [
# ja:reasonerURL <http://jena.hpl.hp.com/2003/GenericRuleReasoner> ;
# ja:rulesFrom <file://D:/Program%20Files/apache-jena-fuseki-3.13.1/run/rule.ttl>; ]
.
我将 fuseki 作为独立服务器运行。当我关闭 OWL 推理器时,它运行良好。但是一旦启用 OWL 推理器,服务器对查询没有响应,即使是像这样的查询
SELECT ?s ?p ?o
WHERE {
?s ?p ?o
}
limit 10
没有响应,然后抛出异常:java.lang.OutOfMemoryError。但是,RuleReasoner 运行良好。 而我的ttl文件有大约1500000个三元组,是不是数据规模太大,OWL Reasoner无法推断? 所有工作都在我的电脑上完成,有朋友可以帮我吗?谢谢
【问题讨论】:
-
如何运行 Fuseki?你设置了堆大小吗?
-
1. OWL 推理器的性能更多地取决于本体的复杂性,而不是实例数据的大小。 2.)也就是说,你真的需要耶拿的 OWL max 推理器吗? Jena 3 中还有其他 OWL 推理子集(微等)。没有响应意味着它仍在工作,正如您所看到的,您分配的堆空间不足,因此出现 OOM 错误,因此没有响应。跨度>
-
谢谢,我通过运行“fuseki-server.bat”启动 Fuseki,并使用默认的 JVM 设置。正如@AKSW 的建议,我使用 jena.hpl.hp.com/2003/OWLMicroFBRuleReasoner> 替换 OWLFBRuleReasoner,然后我得到正确的响应。但是我以前不知道微推理器,我怎样才能得到所有推理器的URL,有没有关于它的文档?我没有在Jena Assembler howto找到推理者的网址。
-
显然所有的reasoner URIs都可以通过ReasonerFactory接口getURI()方法找到:jena.apache.org/documentation/javadoc/jena/org/apache/jena/…不知道网上有没有列表。 @AndyS 也许知道这一点?
-
编辑 fuseki-server.bat 并增加 -Xmx 设置。默认堆大小非常小。
标签: jena owl ontology fuseki reasoner