当前位置: 首页 > 知识库问答 >
问题:

用Fuseki、TDB和命名图推理?

吴单鹗
2023-03-14
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的默认行为,它保持持久的命名图,进行推理,并且还允许更新。)

提前道谢。

共有1个答案

梁豪
2023-03-14

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

我看到的数据的最终视图只是数据的一个非常微小的子集(似乎所有的命名图都被丢弃在这个管道的某个地方,只留下了一个微小的默认图)。使用tdb:UnionDefaultGraph似乎对此没有任何影响。

我找到的解决办法是在配置文件中显式地‘注册’您的命名图。我真的不知道这是否是最好的方法(并且没有找到任何关于这个确切上下文的文档或示例)。我的安装程序(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
 类似资料:
  • 问题内容: 我有一个问题问你。 我有一个三元存储“ Jena TDB”,并且我读到可以为本地存储的RDF数据设置SPARQL端点。特别是,我看到在文献中与Jena TDB一起使用了Fuseki。我以这种方式将文件rdf加载到Jena TDB中: 我正在阅读Apache网站上的Fuseki文档,但我有问题。 特别是,我下载了Fuseki发行版并解压缩。然后,我打开命令提示符,然后转到解压缩fusek

  • 尽管有很多关于这个问题的问题/答案,我仍然很难配置Apache Jena Fuseki。 我正在尝试配置一个Apache Jena Fuseki实例,并激活TDB和OWL reasoner,以测试我的应用程序。我需要创建一个数据集,执行我的测试,并以编程方式删除数据集。 我使用docker映像运行Apache Jena fuseki。 为了测试我的应用程序,我尝试创建一个数据集,执行测试,并以编程

  • Fuseki 是一个提供访问 SPARQL 1.1 标准的服务器。 代表 Web 未来的语义 Web 是一个以知识为中心的模型,除了人类可读的文档和 XML 消息格式之外,它还增加了机器可以理解和处理的数据。SPARQL Protocol and RDF Query Language (SPARQL) 对于语义 Web 就像 SQL 对于关系数据库一样重要。它允许应用程序对分布式 RDF 数据库进

  • TDB

    TensorDebugger (TDB) 是深度学习调试器,使用断点和计算机图形化实时数据流可视化扩展 TensorFlow(谷歌的深度学习框架)。 视频示例 特别的是,TDB 是一个 Python 库和 一个 Jupyter Notebook 扩展的结合,构建 Google 的 TensorFlow 框架。 扩展特性: 断点 任意概要图 灵活

  • 访问现有命名模型的任何方法调用都会导致相同的冻结反应,因此这对于是相同的。通过调用来添加新的命名模型工作良好,因此只能中断对现有模型的访问。 使用环境:Linux 64bit、Oracle Java 1.7.0_09、Jena 2.7.4(包括TDB 0.9.4) 提前感谢您的帮助!

  • 本文向大家介绍详解vue-router 命名路由和命名视图,包括了详解vue-router 命名路由和命名视图的使用技巧和注意事项,需要的朋友参考一下 说明:vue-router的几个文章中例子是连贯的,因此对哪块有疑问请翻阅按发表时间排序的其他文章。 一、概述 给路由定义不同的名字,根据名字进行匹配 给不同的router-view定义名字,router-link通过名字进行对应组件的渲染。 二、