首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jena嵌套属性

Jena嵌套属性
EN

Stack Overflow用户
提问于 2014-01-27 22:40:52
回答 1查看 368关注 0票数 1

请问如何通过代码生成嵌套属性?就像这样:

代码语言:javascript
复制
<geo:Departement rdf:about="DEP_05">
    <geo:code_departement>05</geo:code_departement>
    <geo:subdivision>
        <geo:Arrondissement rdf:about="ARR_051">
            <geo:code_arrondissement>051</geo:code_arrondissement>
            <geo:nom xml:lang="fr">Briançon</geo:nom>
        </geo:Arrondissement>
    </geo:subdivision>
    <geo:subdivision>
        <geo:Arrondissement rdf:about="ARR_052">
            <geo:code_arrondissement>052</geo:code_arrondissement>
            <geo:nom xml:lang="fr">Gap</geo:nom>
        </geo:Arrondissement>
    </geo:subdivision>
</geo:Departement>

我的所有属性(使用“createProperty”创建)都在同一级别。

EN

回答 1

Stack Overflow用户

发布于 2014-01-27 23:50:31

还不清楚你所说的子属性到底是什么意思。重要的是要认识到,RDF是一种基于图形的数据表示,它基于标记的、有向的、称为三元组的边:

主谓宾语

例如,您的数据包括三元组

代码语言:javascript
复制
DEP_05 rdf:type                 geo:Department
DEP_05 geo:code_department      "05"
DEP_05 subdivision              ARR_O51
ARR_051 rdf:type                geo:Arrondissement 
ARR_051 geo:code_arrondissement "051"

RDF/XML提供了许多不同的方法来编写相同的图形。例如,写入数据的一种方式(我已经添加了适当的前缀)是:

代码语言:javascript
复制
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:geo="https://stackoverflow.com/q/21383685/1281433/">
  <geo:Departement rdf:about="https://stackoverflow.com/q/21383685/1281433/DEP_05">
    <geo:code_departement>05</geo:code_departement>
    <geo:subdivision>
      <geo:Arrondissement rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_051">
        <geo:code_arrondissement>051</geo:code_arrondissement>
        <geo:nom xml:lang="fr">Briançon</geo:nom>
      </geo:Arrondissement>
    </geo:subdivision>
    <geo:subdivision>
      <geo:Arrondissement rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_052">
        <geo:code_arrondissement>052</geo:code_arrondissement>
        <geo:nom xml:lang="fr">Gap</geo:nom>
      </geo:Arrondissement>
    </geo:subdivision>
  </geo:Departement>
</rdf:RDF>

另一种方法碰巧较少使用RDF/XML允许的“快捷方式”,它是:

代码语言:javascript
复制
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:geo="https://stackoverflow.com/q/21383685/1281433/" > 
  <rdf:Description rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_052">
    <rdf:type rdf:resource="https://stackoverflow.com/q/21383685/1281433/Arrondissement"/>
    <geo:code_arrondissement>052</geo:code_arrondissement>
    <geo:nom xml:lang="fr">Gap</geo:nom>
  </rdf:Description>
  <rdf:Description rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_051">
    <rdf:type rdf:resource="https://stackoverflow.com/q/21383685/1281433/Arrondissement"/>
    <geo:code_arrondissement>051</geo:code_arrondissement>
    <geo:nom xml:lang="fr">Briançon</geo:nom>
  </rdf:Description>
  <rdf:Description rdf:about="https://stackoverflow.com/q/21383685/1281433/DEP_05">
    <rdf:type rdf:resource="https://stackoverflow.com/q/21383685/1281433/Departement"/>
    <geo:code_departement>05</geo:code_departement>
    <geo:subdivision rdf:resource="https://stackoverflow.com/q/21383685/1281433/ARR_051"/>
    <geo:subdivision rdf:resource="https://stackoverflow.com/q/21383685/1281433/ARR_052"/>
  </rdf:Description>
</rdf:RDF>

尽管它们是不同的XML文档,但它们是同一RDF图的序列化。也有非XML序列化。在Turtle序列化中,您的数据是:

代码语言:javascript
复制
@prefix geo:   <https://stackoverflow.com/q/21383685/1281433/> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

geo:ARR_051  a                   geo:Arrondissement ;
        geo:code_arrondissement  "051" ;
        geo:nom                  "Briançon"@fr .

geo:DEP_05  a                 geo:Departement ;
        geo:code_departement  "05" ;
        geo:subdivision       geo:ARR_051 , geo:ARR_052 .

geo:ARR_052  a                   geo:Arrondissement ;
        geo:code_arrondissement  "052" ;
        geo:nom                  "Gap"@fr .

认识到这些都是同一张图是非常重要的。RDF处理工具并不关心您使用的是哪一个。也就是说,使用更易读的格式是很好的,所以我倾向于使用Turtle。如果您仍然需要使用RDF/XML,那么您可以使用"RDF/XML-ABBREV“语言来序列化模型。为此,将"RDF/XML-ABBREV"指定为Model.write(OutputStream out, String lang)lang参数。在Javadoc中:

write

模型写入(OutputStream out,String lang)

用指定的语言编写此模型的序列化表示。

编写模型所使用的语言由lang参数指定。预定义的值是"RDF/XML“、"RDF/XML-ABBREV”、"N-TRIPLE“、"TURTLE”、(和"TTL")和"N3“。默认值是"RDF/XML“,用null表示。

参数:

  • out - RDF写入的输出流
  • lang-

的输出语言

返回:

  • 此型号

相关问题

这里以前也出现过一些相关的问题,您可能会发现其中一些问题很有帮助。我很快就找到了以下几个:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21383685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档