用TDB和Pubby分离Fuseki中TBox和ABox

时间:2014-09-29 14:24:25

标签: sparql jena semantic-web linked-data fuseki

对于我当前的项目,我需要加载数据集和不同的本体,并使用Fuseki与TDB和Pubby将所有内容公开为链接数据。 Pubby将从单个位置获取数据集并根据该位置创建URI,因此如果我们需要多个不同的位置(如2-3个单独的本体的情况),通过添加其他数据可以很容易地使用Pubby组。

数据集的概念似乎也适用于Fuseki。

基本上我需要公开三种类型的URI:

  • www.mywebsite.com/project/data
  • www.mywebsite.com/project/data/structure
  • www.mywebsite.com/project/ontology

为了使用Pubby 0.3.3创建这样的URI。你必须指定这样的行:

conf:dataset [
   conf:sparqlEndpoint <sparql_endpoint_url_ONE>;
   conf:sparqlDefaultGraph <sparql_default_graph_name_ONE>;
   conf:datasetBase <http://mywebsite.com/project/>;
   conf:datasetURIPattern "(data)/.*";
   (...)
]

Pubby中指定的每个数据集都将从某个URL(通常是SPARQL端点)获取其数据。 对于本体,您将拥有一个使用第二个数据集的数据集,如下所示:

conf:dataset [
   conf:sparqlEndpoint <sparql_endpoint_url_TWO>;
   conf:sparqlDefaultGraph <sparql_default_graph_name_TWO>;
   conf:datasetBase <http://mywebsite.com/project/>;
   conf:datasetURIPattern "(ontology)/.*";
   (...)
]

正如您所看到的,差异将在以下内容:conf:sparqlEndpoint(SPARQL端点),conf:sparqlDefaultGraph(默认Graph),conf:datasetURIPattern(用于使用Pubby创建实际URI所需)。 但是,在使用Fuseki时,我怎么能为数据集分别设置URI。例如,当使用Sesame时,我只创建了两个不同的存储库,当使用Pubby发布数据时,这个技巧就像魅力一样。

并不是很清楚

来自官方Fuseki documentation的示例呈现单个数据集(只读或不读等),但它们似乎都没有呈现这样的场景。虽然这是关联数据的基本原则,但没有直接的例子表明TBox和ABox之间存在明显的分离(见Keeping ABox and TBox Split)。

据我所知,这应该是可能的,但如何?同样可以通过使用(tdb:unionDefaultGraph true ;)在单个SPARQL端点下重新组合TBox和ABox。

1 个答案:

答案 0 :(得分:4)

数据集概念并非Jena Fuseki所独有;它在SPARQL中非常重要。数据集是命名图和默认图的集合。 URI的前缀与存储三元组的位置无关(无论是在命名图形中还是在默认图形中)。

听起来你想把你的ABox三元组保存在一个命名图形中,而你的TBox三元组保存在另一个命名图形中。然后,如果默认图形是命名图形的并集,您将在默认图形中看到两者的内容。你可以在Fuseki做到这一点。