Jena TDB Assembler
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
.
Jena TDB Assembler的更多相关文章
- Jena TDB assembler syntax
1 introduction Assembler is a DSL of Jena to specify something to build, models and dataset, for exa ...
- Jena TDB 102
1 Introduction TDB is a RDF storage of Jena. official guarantees and limitations TDB support full ra ...
- Jena TDB 101 Java API without Assembler
Update on 2015/05/12 ongoing tutorials site on https://github.com/zhoujiagen/semanticWebTutorialUsin ...
- 【转载】Apache Jena TDB CRUD operations
Apache Jena TDB CRUD operations June 11, 2015 by maltesander http://tutorial-academy.com/apache-jena ...
- 导入本体到Jena TDB数据库
本体的存储方法或称本体持久化,大致分为基于内存的方式.基于文件的方式.基于数据库的方式和专门的管理工具方式4种(傅柱等, 2013).其中,基于数据库的方式又有基于关系数据库.基于面向对象数据库.基于 ...
- Outline of Apache Jena Notes
1 description 这篇是语义网应用框架Apache Jena学习记录的索引. 初始动机见Apache Jena - A Bootstrap 2 Content 内容组织基本上遵循Jena首页 ...
- Jena Fuseki 101
前言 正如其承诺的那样 Expose your triples as a SPARQL end-point accessible over HTTP. Fuseki provides REST-sty ...
- Jena Fuseki 102
Version Fuseki v1 Fuseki v2 since Jena 2.13.0 Both v1 and v2 are active and maintained.[2015/06/29] ...
- Apache jena SPARQL endpoint及推理
一.Apache Jena简介 Apache Jena(后文简称Jena),是一个开源的Java语义网框架(open source Semantic Web Framework for Java),用 ...
随机推荐
- RAC7——vip的理解
VIP特点: 1 VIP是在clusterware安装最后阶段,通过脚本VIPCA创建的: 2 VIP作为一个Nodeapps类型的CRS Resource注册到OCR中,并由CRS维护状态: 3 V ...
- hadoop 安装、命令
hadoop安装步骤: 安装java 安装hadoop 下载地址:http://apache.claz.org/hadoop/common/ (说明:该网址current文件夹下,是最新版) hado ...
- jp@gc - Stepping Thread Group 字段说明
1. 安装好插件 参考文档“扩展Jmeter插件获取更多监听器” 2. 添加线程组 右键测试计划->添加->Threads(Users)->jp@gc - Stepping ...
- 洛谷 4389 付公主的背包——多项式求ln、exp
题目:https://www.luogu.org/problemnew/show/P4389 关于泰勒展开: https://blog.csdn.net/SoHardToNamed/article/d ...
- java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction1$mcII$sp
报错信息: Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFound ...
- c#操作xml的代码(插入节点、修改节点、删除节点等)
bookstore.xml文件内容: 复制代码代码示例: <?xml version="1.0" encoding="gb2312"?><bo ...
- 用C#实现C/S模式下软件自动在线升级
用C#实现C/S模式下软件自动在线升级 1 前言 长期以来,广大程序员为到底是使用Client/Server,还是使用Browser/Server结构争论不休,在这些争论当中,C/S结构的程序可维护性 ...
- Django安装与介绍
安装 Django是以Python为语言环境的,所以要先确保计算机上已经安装了Python. Linux ubuntu: sudo pip install Django==1.11.7 安装中指定了版 ...
- Asio 注意事项
本文列举 Asio 各种值得注意的细节. 另见:基于 Asio 的 C++ 网络编程 No Deprecated 在包含 Asio 头文件之前,定义宏 BOOST_ASIO_NO_DEPRECATED ...
- bzoj 1414: [ZJOI2009]对称的正方形
Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究.最近,Orez又得到了一些数据,并已经把它们排成了一个n行m列的矩阵.通过观察,Orez发现这些数据蕴涵了一 ...