gpt4 book ai didi

jena - 用 Fuseki、TDB 和命名图进行推理?

转载 作者:行者123 更新时间:2023-12-04 19:47:58 27 4
gpt4 key购买 nike

我正在提供一个数据集,其中包含来自 Fuseki 2 中 TDB 数据集的 10-20 个命名图。
我想使用推理器对我的数据进行推断。我希望看到的行为是每个图中推断的三元组应该出现在这些图中(尽管如果三元组也出现在默认图中也可以)。
有没有简单的配置方法?我还没有找到任何与我想要做的事情相匹配的配置示例。

我尝试过的配置与以下标准示例非常相似。

DatasetTDB -> GraphTDB -> InfModel -> RDFDataset

我看到的数据的最终 View 只是数据的一个非常小的子集(似乎所有命名图都沿着这条管道放置在某个地方,只剩下很小的默认图)。
使用 tdb:unionDefaultGraph 似乎对此没有影响。

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#> .

# Example of a data service with SPARQL query and update on an
# inference model. Data is taken from TDB.

## ---------------------------------------------------------------
## Service with only SPARQL query on an inference model.
## Inference model base data is in TDB.

<#service2> rdf:type fuseki:Service ;
fuseki:name "inf" ; # http://host/inf
fuseki:serviceQuery "sparql" ; # SPARQL query service
fuseki:serviceUpdate "update" ;
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>
] .

## Base data in TDB.
<#tdbDataset> rdf:type tdb:DatasetTDB ;
tdb:location "DB" ;
# If the unionDefaultGraph is used, then the "update" service should be removed.
# tdb:unionDefaultGraph true ;
.

<#tdbGraph> rdf:type tdb:GraphTDB ;
tdb:dataset <#tdbDataset> .
</code>

有没有人对此有任何想法?

此外,如果有办法使数据集可写,则加分。 (在某种程度上,我试图做的是接近 Owlim/GraphDB 的默认行为,它保持持久命名图,进行推理,并允许更新。)

提前致谢。

最佳答案

我的代码面临(或面临)同样的问题,但我有部分解决方案。不幸的是,评论中提供的链接并没有真正帮助我仍然面临的问题,但这解决了部分问题。

The final view of the data I see is only a very tiny subset of the data (it appears that all the named graphs are dropped somewhere along this pipeline, and only the tiny default graph is left). Using tdb:unionDefaultGraph seems to have no effect on this.



我为此找到的解决方法是在配置文件中明确“注册”您的命名图。我真的不知道这是否是最好的方法(并且没有找到任何针对此确切上下文的文档或示例)。我的设置(Fuseki 2.4)的一个工作示例:
[usual configuration start]

# TDB Dataset
:tdb_dataset_readwrite
a tdb:DatasetTDB ;
tdb:unionDefaultGraph true ;
#if you want all data to available in the default graph
#without 'FROM-NAMing them' in the SPARQL query
tdb:location "your/dataset/path" .

# Underlying RDF Dataset
<#dataset>
rdf:type ja:RDFDataset ;
ja:defaultGraph <#model> ;
ja:namedGraph [
ja:graphName <your/graph/URI> ;
ja:graph <#graphVar>
] ;

[repeat for other named graphs]
.


######
# Default Model : Inference rules (OWL, here)
<#model> a ja:InfModel;
ja:baseModel <#tdbGraph>;
ja:reasoner
[ ja:reasonerURL
<http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
]
.

# Graph for the default Model
<#tdbGraph> rdf:type tdb:GraphTDB;
tdb:dataset :tdb_dataset_readwrite .

######
# Named Graph
<#graphVar> rdf:type tdb:GraphTDB ;
tdb:dataset :tdb_dataset_readwrite ;
tdb:graphName <your/graph/URI>
.

然后,您可以运行这样的查询
[prefixes]

SELECT ?graph ?predicate ?object
WHERE {
GRAPH ?graph {[a specific entity identifier] ?predicate ?object}
}
LIMIT 50

它将显示(在这种情况下)属性和值,以及找到它们的源图。

但是:在这个例子中,即使默认图应该导入推理规则(应该全局应用,特别是因为启用了 unionDefaultGraph 参数),它们也不是以“跨图”方式应用的,这就是我的问题我还在面对。

根据 Andy Seaborne 的帖子 here,通常情况下,如果您将推理引擎添加到每个图中,这应该可以工作。 ,但在我的情况下不起作用。

尽管如此,希望这会有所帮助。

关于jena - 用 Fuseki、TDB 和命名图进行推理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com