Jena总共支持三种内置存储模式,分别是RDB,SDB,和TDB。其中RDB现在几乎不用了,因为速度比较慢。而官方推荐的则是TDB,速度快,操作简单,支持几十亿条记录,且支持几百个并行查询。
关于Jena这整个的Project,有一个需要事先声明一下,像ARQ,TDB,SDB这些API里面都包含了Jena的jar文件,所以你下载了任何一个,都可以不需要下载Jena了。之前有一个人写的代码老是报错,然后问我。我在我的电脑上运行的时候,发现没有错。最好发现是她既把TDB的Jar加进去了,又把Jena的Jar加进去了,导致出错。
我不明白Jena的开发者为什么要这样做,搞得挺麻烦的。
首先,要明确一点,Jena所有的东西都是围绕着Model进行的。一个TDB里面可以包含多个的Model,就像一个数据库里面可以包含多个的表,这些Model都有各自的名字,你可以访问各个Model,而不用把其他的Model加载到内存里面。由于测试的时候,大部分数据并不是很大,一般都是用DefaultModel这个Model,下面是简单创建一个TDB并加载RDF文件到TDB里面去的例子:
package
TDB教程的例子;
import
com.hp.hpl.jena.query.Dataset;
import
com.hp.hpl.jena.rdf.model.Model;
import
com.hp.hpl.jena.tdb.TDBFactory;
import
com.hp.hpl.jena.util.FileManager;
public
class
CreateTDB
{
public
static
void
main(String [] args)
{
Dataset ds = TDBFactory.createDataset(
"test"
);
Model model = ds.getDefaultModel();
FileManager.get().readModel(model,
"RDFFile"
);
model.commit();
model.close();
ds.close();
}
}
上面的代码很简单,这样就可以把RDF文件加载到TDB里面了。
现在会面临另一个问题,怎么对TDB进行查询呢?sparql的查询分好几种,最常用的是select查询,还有其他的查询是ASK查询,update查询,以及construct查询,这里只介绍一下select查询和update查询。
package
TDB教程的例子;
import
com.hp.hpl.jena.query.Dataset;
import
com.hp.hpl.jena.query.QueryExecution;
import
com.hp.hpl.jena.query.QueryExecutionFactory;
import
com.hp.hpl.jena.query.ResultSet;
import
com.hp.hpl.jena.rdf.model.Model;
import
com.hp.hpl.jena.update.UpdateAction;
public
class
queryTDB
{
public
ResultSet SelectQuery(Model model,String queryString)
{
QueryExecution qexec = QueryExecutionFactory.create(queryString, model);
ResultSet resultSet = qexec.execSelect();
return
resultSet;
}
public
void
updateQuery(Dataset ds,String updateFile)
{
UpdateAction.readExecute(updateFile, ds);
}
}
分享到:
相关推荐
这是Jena TDB的查询生成器,它将查询构建为三重存储数据库。
此外,`sdb.jar`则支持使用Apache Derby或Jena TDB(一种专为语义数据设计的本地存储系统)作为存储后端,提供高性能的本体数据管理。 对于开发者来说,源代码是理解软件工作原理和进行定制化开发的重要资源。在这...
TDB(RDF数据的存储数据库) 此外Jena还提供了非常实用的命令行工具(例如SPARQL查询、批量导入RDF数据等)和一个基于Jena框架构建的Web应用程序Fuseki。 学习Jena框架,一定要结合对于的语义技术的知识,这样才能...
TDB使用分片技术和索引优化,使得大规模语义数据的管理变得可能。 7. **Jena SDB**:SDB是Jena的数据库抽象层,允许将RDF数据存储在关系数据库中,提供了一种灵活的、可扩展的数据存储解决方案。 **二、Jena 2.13...
- 数据存储:Jena支持多种后端存储,如Fuseki(一个SPARQL服务器)、TDB(本地数据库)和Sesame等。 - 异步查询和并发访问:对于大规模数据,可以利用Jena的并发特性优化性能。 8. **附带说明文档** 压缩包中的...
4. **Jena TDB**:TDB是Jena中的一个高性能、本地化的RDF存储解决方案,适用于大规模数据集。它设计为内存高效,并且支持离线分析。 5. **Jena模型和API**:Jena提供了一组丰富的Java API,使得开发者能够方便地...
在使用Apache Jena 3.7.0和Apache Jena Fuseki 3.7.0时,开发者需要注意以下几点: - **学习曲线**:虽然Jena提供了丰富的功能,但理解和掌握其全部功能可能需要一定的学习时间。 - **性能优化**:根据数据规模选择...
5. **TDB存储**:TDB是Jena中的一个高效、可扩展的RDF数据存储解决方案,专为大量数据设计。它将RDF数据存储在文件系统中,同时提供高效的查询性能。 6. **示例和文档**:在压缩包的example目录下,你可能会找到...
一、Jena ARQ简介 Jena ARQ是一个开源的Java框架,专门设计用于实现SPARQL协议,这是W3C定义的标准查询语言,用于查询RDF和RDFS数据。ARQ提供了一个全面的API,支持执行SPARQL查询,构建SPARQL endpoints,以及进行...
jar包,官方版本,自测可用
4. **TDB**: TDB是Jena的事务型数据库,用于存储大规模的RDF数据,提供高效的读写性能。TDB2是其后续版本,提供了更先进的特性。 5. **Jena SDB**: SDB是基于PostgreSQL的Jena数据库连接器,用于将RDF数据存储在...
3. **TDB**:TDB是Jena的一个持久化存储系统,专为大规模RDF数据设计,提供高效且可扩展的存储解决方案。 4. **ARQ**:ARQ是Jena的SPARQL查询引擎,支持标准SPARQL语法,包括SELECT、CONSTRUCT、ASK和DESCRIBE四种...
2. **配置Jena存储**:使用`ModelFactory.createRDBModel()`方法,指定数据库连接参数和RDF模式。 3. **加载本体**:利用Jena的Ontology API,加载或创建本体模型。 4. **保存本体**:将模型保存到RDB存储,可以...
在这个"apache-jena-2.12.1"安装包中,我们将会探索Jena的核心功能、主要组件以及如何在你的项目中安装和使用它。 Jena是由Apache软件基金会开发的,它提供了一整套工具来处理RDF(Resource Description Framework...
6. **Documentation**: 压缩包中应该包含 Jena 的用户指南、API 文档和开发手册,这些文档对于学习和使用 Jena 非常重要,可以帮助开发者了解如何有效地使用各个组件。 7. **Examples and Tests**: 示例代码和测试...
7. **Triple Store**:Jena 支持多种存储后端,如内存存储、TDB(TDB1和TDB2)以及FedX(联邦查询)。TDB提供了一个可扩展的、持久化的存储解决方案,而FedX允许跨多个数据源执行SPARQL查询。 8. **Reasoners**:...
Jena,一个在Java编程语言中广泛使用的开源框架,专为处理Resource Description Framework (RDF)、Semantic Web和Linked Data而设计。其2.6.0版本的发布,为开发者提供了一个强大且成熟的工具集,用于构建复杂的语义...
RDF是描述网络资源的标准模型,它通过URI(Uniform Resource Identifier)来标识资源,并使用三元组表示数据。RDFa则是一种在HTML或其他XML文档中嵌入语义数据的方法。Apache Jena提供了RDF API,使得开发者可以方便...
其中,最常用的是Fuseki,这是一个基于HTTP的服务器,可以提供SPARQL查询服务,支持多种数据存储,如TDB(Temporal Data Base)和Jena2的Native Store,这些都为大规模语义数据的存储提供了高效解决方案。...
5. **GraphDB**:Jena内置了内存数据库和持久化存储选项,如TDB(Triple-Database)和FUSEKI(一个基于HTTP的SPARQL服务器),用于存储和检索大量RDF数据。 6. **Reasoners**:Jena包含了几种推理引擎,如Hermit、...