zoukankan      html  css  js  c++  java
  • 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
       .
    
  • 相关阅读:
    得到相对Plugin的路径
    GEF常见问题4:非矩形图元
    在Eclipse的About对话框上添加自己的图标
    用GMF生成简化的数据库设计器
    全超实用的Javascript类库和jQuery插件大全之一:图片,地图和图形
    #敏捷个人# 第二批敏捷个人推广者实践团报名
    2012年最新的12款超棒jQuery插件
    《敏捷个人》周刊 第14期 (可下载)
    时间管理:敏捷个人时中法卡片
    #敏捷个人# 实践团报名
  • 原文地址:https://www.cnblogs.com/yes-V-can/p/6719669.html
Copyright © 2011-2022 走看看