Jena TDB 102
1 Introduction
TDB is a RDF storage of Jena.
official guarantees and limitations
- TDB support full range of Jena APIs
- TDB can be used as a high performance RDF store on a single machine
- TDB can be accessed and managed with cmd scripts and Java API
- TDB dataset can be protected against corruption using transaction
- TDB supports Serializable transaction level
- TDB supports ACID transaction trough write-ahead-logging
- A TDB dataset should only directly accessed from a single JVM at a time, otherwise data corruption may occur.From 1.1.0 onwards TDB includes automatic protection against multi-JVM usage which prevents this under most circumstances.
2 TDB Java API
The application obtain a model or RDF dataset from TDB, navigate or use it for other model or dataset.
construct a model or dataset
2 ways to specify data source:
- directory
see Jena TDB API without Assembler
- assembler file
the assembler syntax and sematic see under 5 assembler: a DSL
bulkloader
load data into an empty dataset fastly, using cmd utitilies: tdbloader
concurrency support
USE transaction DEEPLY, it's guaranteed.
cache
TDB support caching in different levels, from RDF terms to disk block.
When not using transaction, should call synchronization explicitly:
Dataset dataset = ... ;
TDB.sync(dataset) ;
3 command line scripts
scripts located in JENA_HOME/bin
datasource specification
// assembler file
--desc=assembler.ttl
--tdb=assembler.ttl
// directory
--loc=DIRECTORY
--location=DIRECTORY
if not specified, --desc=tdb.ttl default is set.
commands
tdbloader
Bulk loader and index builder.
tdbloader2
Bulk loader and index builder. Faster than tdbloader but only works on Linux and Mac OS/X since it relies on some Unix system utilities.
Restriction: This bulk loader can only be used to create a database. It may overwrite existing data. It only accepts the --loc argument and a list of files to load.
tdbquery
Invoke a SPARQL query on a store.
Use --time for timing information.tdbdump
Dump the store in N-Quads format.
tdbstats
Produce a statistics for the dataset.
//TODO cmd tool usage
4 transaction
detailed limitations
- Bulk loads: the TDB bulk loader is not transactional
- Nested transactions are not supported.
- Some active transaction state is held exclusively in-memory, limiting scalability.
- Long-running read-transactions cause a build-up of pending changes.
API for transaction
read transaction
// use directory to specify datasource
Dataset dataset = TDBFactory.createDataset(directoryPathStr);
dataset.begin(ReadWrite.READ) ;
try {
...
//dataset.abort();// abort transaction
} finally {
dataset.commit();
//dataset.end(); // same as commit()
}
write transaction
dataset.begin(ReadWrite.WRITE) ;
try {
...
dataset.commit();
} finally {
dataset.end();
}
see Jena TDB 101 Java API without Assembler for a running example.
tansaction with concurrency
2 methods:
- shareable Dataset, sequential transaction behaviour
- private Dataset, independent transaction
5 assembler: a DSL
see Jena TDB assembler
6 dataset and named graph
concept
An RDF dataset is composed of 1 unnamed default graph, and 0+ named graphs. Here graph is same as graph is SPARQL vocabulary.
storage
A RDF data set use an individual O.S. directory for storage.
The default graph is held as a single graph, while the named graphs are held in a set of indexes.
query
SPARQL query is fully supported in named graphs of TDB backed datasets.
2 special graph name
- **urn:x-arq:UnionGraph**: union of all named graphs in a dataset
- **urn:x-arq:DefaultGraph**: the unamed default graph in a dataset
7 TDB configuration
TODO
8 TDB optimizer
TODO
references
Apache Jena TDB
Using TDB from Java through the API
Command line utilities
Transactions
Assemblers for Graphs and Datasets
Datasets and Named Graphs
Dynamic Datasets: Query a subset of the named graphs
Quad filtering: Hide information in the dataset
The TDB Optimizer
TDB Configuration
Value Canonicalization
TDB Design
Use on 64 bit or 32 bit Java systems
FAQs
Jena TDB 102的更多相关文章
- Jena TDB 101 Java API without Assembler
Update on 2015/05/12 ongoing tutorials site on https://github.com/zhoujiagen/semanticWebTutorialUsin ...
- Jena TDB assembler syntax
1 introduction Assembler is a DSL of Jena to specify something to build, models and dataset, for exa ...
- 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 TDB CRUD operations
Apache Jena TDB CRUD operations June 11, 2015 by maltesander http://tutorial-academy.com/apache-jena ...
- Jena TDB Assembler
TDB Assembler Assemblers (装配器) 是Jena中用于描述将要构建的对象(通常是模型和数据集 models & datasets)的一种通用机制.例如, Fuseki ...
- 导入本体到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 ...
- Apache jena SPARQL endpoint及推理
一.Apache Jena简介 Apache Jena(后文简称Jena),是一个开源的Java语义网框架(open source Semantic Web Framework for Java),用 ...
随机推荐
- mysql 通过IP连接
解决方法如下: 编辑my.ini 在[mysqld]节点下新增或修改如下两行行 skip-name-resolve #忽略主机名的方式访问 lower_case_table_names= #忽略数据库 ...
- ubuntu 到底是选择32位还是64位?
ubuntu 到底是选择32位还是64位? 2011-06-03 15:16:31 标签:ubuntu linux 休闲 cpu 职场 原文出处:官方wiki原文作者:授权许可: 创作共用协议Att ...
- Using User-Named Triggers in Oracle Forms
A user-named trigger is a trigger defined in a form by the developer. User-Named triggers do not aut ...
- linux 双网卡实现
linux实现双网卡,在虚拟机中创建一个新网卡,NAT方式连接,其中eth0设置为连接外网,目前eth0为自动分配状态,所以将代码注释掉了,eth1设置为连接内网.
- Trick
1. var b = a.slice(beginIndex,endIndex); [].slice.call( [] ) Array.prototype.slice.call([]) will cop ...
- PHP的autoload机制的实现解析
在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利 一.autoload机制概述 在使用PHP的OO模式开发系 ...
- sizeof既是关键字,又是运算符(操作符),但不是函数!
sizeof是关键字吗 sizeof是关键字,这一点毋庸置疑.你不能将sizeof定义为任何标识符.查看C语言标准文档里的说明: sizeof是运算符(操作符)吗 C语言中,sizeof是运算符(操作 ...
- 转:C++中的单例模式
C++中的单例模式 单例模式也称为单件模式.单子模式,可能是使用最广泛的设计模式.其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享.有很多地方需要这样的功能模块, ...
- 获得省市 json 后台代码
string connString = ConfigurationManager.ConnectionStrings["connStr"].ToString(); SqlConne ...
- maven入门探讨
java项目最恶心的一点莫过于需要使用大量的jar.每次引用jar的时候都要自己手动去各地寻找,然后导入到项目的指定文件夹当中最后还要添加Path.这无疑是一项工作量巨大的工作,同时如果控制不当就会提 ...