`

Jena TDB的使用简介

阅读更多

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");//建立了一个test的TDB,如果存储test的TDB,则表示使用这个TDB
        Model model = ds.getDefaultModel();//这里使用TDB的默认Model
        FileManager.get().readModel(model, "RDFFile");//读取RDF文件到指定的model里面
        /*
         * 这里要详细说一下如何读取RDF到Model里面的方法了,其实model就有
         * read方法可以对RDF进行读取,但是上面用FileManager会比较好一点,它会自动
         * 处理许多问题
         */
 
        model.commit();//这里类似于数据库的commint,意思是把现在的操作立刻提交
        model.close();//结束使用的时候,一定要对Model和Dataset进行关闭
        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
{
    /*
     * 查询的方式有多种,查询的对象也有多种,可以对一个Dataset进行查询
     * 也可以对一个Model进行查询,还可以对一个Graph进行查询,总之Jena
     * 能提供很强大的功能
     */
    public ResultSet SelectQuery(Dataset ds, String queryString)
    {
 
        QueryExecution qexec = QueryExecutionFactory.create(queryString, ds);
        ResultSet resultSet = qexec.execSelect();
        return resultSet;
    }
 
    /**
     * @param model
     * @param queryString
     * @return 返回的是查询的结果,类型为ResultSet类型
     *
     */
    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);//updateFile是含有更新操作的sparql文件,就是把sparql保存到文件里面去
    }
 
}
分享到:
评论

相关推荐

    Jena TDB的查询生成器JenaQBuilder-开源

    这是Jena TDB的查询生成器,它将查询构建为三重存储数据库。

    jena2.6.4.jar and jena2.6.4-src

    此外,`sdb.jar`则支持使用Apache Derby或Jena TDB(一种专为语义数据设计的本地存储系统)作为存储后端,提供高性能的本体数据管理。 对于开发者来说,源代码是理解软件工作原理和进行定制化开发的重要资源。在这...

    jena语义网络开发框架

    TDB(RDF数据的存储数据库) 此外Jena还提供了非常实用的命令行工具(例如SPARQL查询、批量导入RDF数据等)和一个基于Jena框架构建的Web应用程序Fuseki。 学习Jena框架,一定要结合对于的语义技术的知识,这样才能...

    jena (jena 2.13版)官网最新

    TDB使用分片技术和索引优化,使得大规模语义数据的管理变得可能。 7. **Jena SDB**:SDB是Jena的数据库抽象层,允许将RDF数据存储在关系数据库中,提供了一种灵活的、可扩展的数据存储解决方案。 **二、Jena 2.13...

    jena实例实现

    - 数据存储:Jena支持多种后端存储,如Fuseki(一个SPARQL服务器)、TDB(本地数据库)和Sesame等。 - 异步查询和并发访问:对于大规模数据,可以利用Jena的并发特性优化性能。 8. **附带说明文档** 压缩包中的...

    apache-jena-2.7.0

    4. **Jena TDB**:TDB是Jena中的一个高性能、本地化的RDF存储解决方案,适用于大规模数据集。它设计为内存高效,并且支持离线分析。 5. **Jena模型和API**:Jena提供了一组丰富的Java API,使得开发者能够方便地...

    apache jena 3.7.0和apache-jena-fuseki3.7.0

    在使用Apache Jena 3.7.0和Apache Jena Fuseki 3.7.0时,开发者需要注意以下几点: - **学习曲线**:虽然Jena提供了丰富的功能,但理解和掌握其全部功能可能需要一定的学习时间。 - **性能优化**:根据数据规模选择...

    apache-jena-2.7.2.zip

    5. **TDB存储**:TDB是Jena中的一个高效、可扩展的RDF数据存储解决方案,专为大量数据设计。它将RDF数据存储在文件系统中,同时提供高效的查询性能。 6. **示例和文档**:在压缩包的example目录下,你可能会找到...

    jena-arq2.9

    一、Jena ARQ简介 Jena ARQ是一个开源的Java框架,专门设计用于实现SPARQL协议,这是W3C定义的标准查询语言,用于查询RDF和RDFS数据。ARQ提供了一个全面的API,支持执行SPARQL查询,构建SPARQL endpoints,以及进行...

    com.hp.hpl.jena.tdb-0.3-incubating-sources.jar

    jar包,官方版本,自测可用

    apache-jena-3.8.0.zip

    4. **TDB**: TDB是Jena的事务型数据库,用于存储大规模的RDF数据,提供高效的读写性能。TDB2是其后续版本,提供了更先进的特性。 5. **Jena SDB**: SDB是基于PostgreSQL的Jena数据库连接器,用于将RDF数据存储在...

    jena语义框架3.7.0

    3. **TDB**:TDB是Jena的一个持久化存储系统,专为大规模RDF数据设计,提供高效且可扩展的存储解决方案。 4. **ARQ**:ARQ是Jena的SPARQL查询引擎,支持标准SPARQL语法,包括SELECT、CONSTRUCT、ASK和DESCRIBE四种...

    Jena 开源与以往项目

    2. **配置Jena存储**:使用`ModelFactory.createRDBModel()`方法,指定数据库连接参数和RDF模式。 3. **加载本体**:利用Jena的Ontology API,加载或创建本体模型。 4. **保存本体**:将模型保存到RDB存储,可以...

    jena安装包

    在这个"apache-jena-2.12.1"安装包中,我们将会探索Jena的核心功能、主要组件以及如何在你的项目中安装和使用它。 Jena是由Apache软件基金会开发的,它提供了一整套工具来处理RDF(Resource Description Framework...

    apache-jena-4.3.2

    6. **Documentation**: 压缩包中应该包含 Jena 的用户指南、API 文档和开发手册,这些文档对于学习和使用 Jena 非常重要,可以帮助开发者了解如何有效地使用各个组件。 7. **Examples and Tests**: 示例代码和测试...

    jena-3.0.1.zip

    7. **Triple Store**:Jena 支持多种存储后端,如内存存储、TDB(TDB1和TDB2)以及FedX(联邦查询)。TDB提供了一个可扩展的、持久化的存储解决方案,而FedX允许跨多个数据源执行SPARQL查询。 8. **Reasoners**:...

    Jena-2.6.0

    Jena,一个在Java编程语言中广泛使用的开源框架,专为处理Resource Description Framework (RDF)、Semantic Web和Linked Data而设计。其2.6.0版本的发布,为开发者提供了一个强大且成熟的工具集,用于构建复杂的语义...

    apache-jena-4.1.0.zip

    RDF是描述网络资源的标准模型,它通过URI(Uniform Resource Identifier)来标识资源,并使用三元组表示数据。RDFa则是一种在HTML或其他XML文档中嵌入语义数据的方法。Apache Jena提供了RDF API,使得开发者可以方便...

    Jena 语义网框架源码

    其中,最常用的是Fuseki,这是一个基于HTTP的服务器,可以提供SPARQL查询服务,支持多种数据存储,如TDB(Temporal Data Base)和Jena2的Native Store,这些都为大规模语义数据的存储提供了高效解决方案。...

    apache-jena-3.2.0

    5. **GraphDB**:Jena内置了内存数据库和持久化存储选项,如TDB(Triple-Database)和FUSEKI(一个基于HTTP的SPARQL服务器),用于存储和检索大量RDF数据。 6. **Reasoners**:Jena包含了几种推理引擎,如Hermit、...

Global site tag (gtag.js) - Google Analytics