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),用 ...
随机推荐
- 转 猫都能学会的Unity3D Shader入门指南(二)
猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己 ...
- hbm配置文件 generator节点各种解释
今天犯了个错误 generator节点class属性有这么几个值(主键生成策略方案): assigned:由用户指定主键值 sequence:由oracle序列生成 increment:对类型为lon ...
- android音视频点/直播模块开发
音视频 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白, ...
- GitHub下载的 Git Shell中出现的字符支持警告,将字体修改为新宋体即可
——解决办法: 将命令行字体修改为新宋体就可以了. 文章引用:http://www.cnblogs.com/veryinf/archive/2012/10/26/2740899.html
- Python类的实例属性详解
实例属性 1.类被实例化后才会具有的属性 2.一般在_init_()方法中创建并初始化 3.直接使用即定义:self.<属性名> 4.引用方法:self.<属性名> 5.sel ...
- spm总结
自己尽量做出来,不要等和依靠,发挥主观能动性,所有的配置都在features模块里,一个一个的慢慢找和点击查找
- iOS开发技巧
一.寻找最近公共View 我们将一个路径中的所有点先放进 NSSet 中.因为 NSSet 的内部实现是一个 hash 表,所以查找元素的时间复杂度变成了 O(1),我们一共有 N 个节点,所以总时间 ...
- 【汇编】mov [1000],bx:immediate operand not allowed
],bx;在目的操作数中编译器会忽略[],所以[1000]就成了立即数,出现“immediate operand not allowed”改: ;mov bx,[1000];而在源操作数中,就不会出现 ...
- android 发短信
SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divi ...
- 转载-Web API 入门
An Introduction to ASP.NET Web API 目前感觉最好的Web API入门教程 HTTP状态码 Web API 强势入门指南 Install Mongodb Getting ...