为什么耶拿·富塞基对猫头鹰的推理没有反应?



我想用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推理器无法进行推理吗? 所有工作都在我的电脑上完成,任何朋友都可以为我提供帮助吗?谢谢

在 fuseki 中,当在太大的数据集上运行推理器时,推理将在查询执行时间内应用于所有图形。除此之外,所有推论都将在 Fuseki TDB 案例推理器中实现 应用前向推理.它会给系统带来负担,导致图形会很大,无法使用 RAM 内存进行推理。

我们已经撞毁了一台将 1 TD RAM 专用于 Fuseki 的机器。

一种可能的解决方案是将数据集拆分为独立的部分来优化查询。 有关更多信息,请查看Hadoop和AllegroGraph解决方案,以实现集群的高性能 https://allegrograph.com/hadoop-and-allegrograph-the-semantic-data-lake-for-analytics/

这取决于您的需求。在无限范围内,集群解决方案似乎是最好的,但也许在本地增加专用 RAM 内存到 JVM 可以解决您的问题。

相关内容

  • 没有找到相关文章

最新更新