TDB Assembler

Assemblers (装配器) 是Jena中用于描述将要构建的对象(通常是模型和数据集 models & datasets)的一种通用机制。例如, Fuseki 严重依赖使用 Assemblers 来描述模型和数据集.

SPARQL 查询是在RDF数据集上操作的。RDF 数据集由一个未命名的默认图( a unnamed, default graph) 和 0个或多个命名图(named graphs)构成。

将数据描述存储在一个文件中,意味着应用程序工作时依赖的数据可以随时改变而不需要修改程序代码。

Dataset

This is needed for use in Fuseki.

可以使用一个装配文件来构造一个数据集:

@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .[] ja:loadClass "org.apache.jena.tdb.TDB" .
tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model      .<#dataset>      rdf:type         tdb:DatasetTDB ;tdb:location "DB" ;.

一个位置只能存储一个数据集。 (filing system directory).

第一部分声明了后面使用的前缀:

@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .

紧接着是一条加载TDB的陈述(a statement). TDB 在加载时会自动初始化. 但TDB的 jar文件必须在 Java 的classpath目录下.

对于机器来说,此陈述在本文件中的顺序并不影响其功能,因为 jena 的装配文件系统( assembler system)会在尝试装配任何对象之前,先检查所有的 ja:loadClass  陈述,。将此陈述放在文件的前面,是为了帮助使用者阅读文件.

[] ja:loadClass "org.apache.jena.tdb.TDB" .

最后是一个关于TDB数据集自身的描述:

<#graph> rdf:type tdb:DatasetTDB ;tdb:location "DB" ;

属性 tdb:location 将文件名作为一个字符串. 它相对于应用程序当前的工作目录, 而与 assembler 文件位置无关.

通过观察 tdb:GraphDataset的一个主语(subject)可以获得数据集的描述。若在一个文件中定义了多个 graph,应用程序必须明确指定使用哪一个描述( description).

Union Default Graph

一个 assembler 可以指明用于查询的默认图(default graph )是多个命名图的集合(union of the named graphs)。通过加入 tdb:unionDefaultGraph可以实现此功能.

<#dataset>      rdf:type    tdb:DatasetTDB ;tdb:location "DB" ;tdb:unionDefaultGraph true ;.

Graph

TDB 总是将数据存储在一个 RDF 数据集中. 可以只使用数据集中的一个图. 通常的做法是使用数据集中的默认图。

TDB数据集中一个单一的图可以采用下述描述:

@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .[] ja:loadClass "org.apache.jena.tdb.TDB" .# 声明一个数据集,并指明其位置
<#dataset> rdf:type tdb:DatasetTDB ;tdb:location "DB" ;# 声明一个图,并指明其数据集
<#graph> rdf:type tdb:GraphTDB ;tdb:dataset <#dataset> .

某位置下的数据集中的一个特定的命名图可以这样装配:

<#graphNamed> rdf:type tdb:GraphTDB ;tdb:dataset <#dataset> .tdb:graphName <http://example/graph1> ;.

Mixed Datasets

可以使用不同存储子系统支持的图来创建数据集,尽管此时查询不一定高效. 要在数据集中包含命名图,请使用下面的词汇:

@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .[] ja:loadClass "org.apache.jena.tdb.TDB" .
tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model .# A dataset of one TDB-backed graph as the default graph and
# an in-memory graph as a named graph.
<#dataset> rdf:type      ja:RDFDataset ;ja:defaultGraph <#graph> ;ja:namedGraph[ ja:graphName      <http://example.org/name1> ;ja:graph          <#graph2> ] ;.<#graph> rdf:type tdb:GraphTDB ;tdb:location "DB" ;.<#graph2> rdf:type ja:MemoryModel ;ja:content [ja:externalContent <file:Data/books.n3> ] ;.

注意,此处我们增加了一些内容:

tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model .

这提供了与复杂模型设置(如推理机)的集成。

RDFS

一些定义

@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .tdb:Dataset a rdfs:Class .
tdb:GraphTDB a rdfs:Class .tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model .# tdb:location 是一个 rdf:Property
# 定义域(domain,subject)是tdb:Dataset 或 tdb:GraphTDB
# 值域(range,object)是简单文本值
tdb:location a rdf:Property ;# domain is tdb:Dataset or tdb:GraphTDB# The range is simple literal.tdb:unionDefaultGraph a rdf:Property ;rdfs:domain tdb:Dataset ;# The range is xsd:boolean.tdb:graphName a rdf:Property ;rdfs:domain tdb:GraphTDB ;# range is a URI.

转载于:https://www.cnblogs.com/yes-V-can/p/6719669.html

Jena TDB Assembler相关推荐

  1. 知识图谱实践篇(四):Apache jena SPARQL endpoint及推理

    在上一篇我们学习了如何利用D2RQ来开启endpoint服务,但它有两个缺点: 1. 不支持直接将RDF数据通过endpoint发布到网络上. 2. 不支持推理. 这次我们介绍的Apache Jena ...

  2. Linux系统中Jena环境变量配置及使用

    前言:最近在使用jena开发知识图谱,总结一下最近的使用过程. 文末有 apache-jena-3.6.0,Apache-jen.a-fuseki-3.6.0以及d2rq-0.8.1tar 文件.因为 ...

  3. Jena对本体、RDF三元组的API操作记录

    目录 目标 导入RDF 导入本体文件 新增三元组 (1)Statement方式 (2)Resource方式 问题记录 参考文献 目标 通过这份源码以及对应配套的博客内容的学习,基本上是了解和掌握了知识 ...

  4. 我爱机器学习网机器学习类别文章汇总

    机器学习领域的几种主要学习方式 From Stumps to Trees to Forests KDD-2014 – The Biggest, Best, and Booming Data Scien ...

  5. 知识图谱——领域知识问答系统简单介绍

    一.概念介绍 [知识图谱] A knowledge graph consists of a set of interconnected typed entities and their attribu ...

  6. 我爱机器学习--机器学习方向资料汇总

    转载:http://blog.csdn.net/shuimanting520/article/details/45748505 机器学习爱好者资料 机器学习领域的几种主要学习方式 From Stump ...

  7. Linux 服务器安装部署Jena

    Jena 1.下载包 https://jena.apache.org/download/index.cgi 2.上传至服务器对应路径并解压 3.配置环境变量 > sudo vim ~/.bash ...

  8. jena+fuseki+python查询

    1.Jena的安装配置及使用(Eclipse平台) 2. jena组件的使用 Apache Jena提供TDB.Rule Reasoner.Fuseki组件,其中TDB是Jena用于存储RDF类型数据 ...

  9. Protege、D2RQ、JENA与SPARQL

    引言 关于的知识图谱的相关概念在从语义网络到知识图谱这篇博文中有简单的描述,下面介绍一下在知识图谱实际使用中的一些工具. 数据 来源于The Movie Database (TMDb)抓取的电影数据, ...

  10. 简单配置jena在eclipse的开发环境

    Jena:A free and open source Java framework for building Semantic Web and Linked Data applications. 耶 ...

最新文章

  1. Luogu P1082 同余方程(NOIP 2012) 题解报告
  2. 结构化数据不应该被人工智能忘之脑后 !
  3. ASP.NET中如何搭建三层架构
  4. 监控zabbix面试题
  5. sql中当前日期加2个月_一文搞定Mysql日期时间函数
  6. C++总结笔记(九)—— 多态
  7. 你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的)
  8. Python中操控ssh和sftp
  9. Poj 1755Triathlon 未Ac,先mark
  10. mysql base dir_install_mysql57.sh
  11. centos 6.7 mysql_CentOS6.7 64位环境下安装部署MySQL-5.7.13
  12. [FZYZOJ 1002] 雨天
  13. 用html语言写一个环形,html5环形流程图可添加流程图代码
  14. TYPE g_date_tbl_typ IS TABLE OF DATE INDEX BY VARCHAR2(1000);
  15. 极验验证——滑块拼图验证码
  16. clustalw序列比对_序列比较中ClustalW和BLAST的区别
  17. 算法总结——大整数乘法
  18. Altium DesignerV21.4下载链接备份
  19. 《软技能——代码之外的生存指南》笔记
  20. html css精灵,CSS spirit /css精灵

热门文章

  1. 2 线性化 泰勒级数 泰勒公式
  2. 奶爸日记3 - 给鑫鑫做的第一顿饭
  3. vue项目安装vuex报错:Object(...) is not a function“
  4. 西安华为 java研发工程师_【华为西安研究所工资】研发工程师待遇-看准网
  5. java无法找到加载主类是什么意思,在Java程序运行时遇到的“Could not find or load main class(无法找到或者加载主类)”是什么意思?...
  6. HDU - 3533 Escape
  7. 网页中MP4视频格式要求
  8. vue3+vite2警告提示The above dynamic import cannot be analyzed by vite问题,vite中import动态引入
  9. java中excel转jpg_Java中excel转换为jpg/png图片 采用aspose-cells-18.6.jar
  10. 搜索方法_如何搜索到自己的CSDN博客