写没有字母顺序的rdf文件

时间:2014-07-02 20:41:25

标签: rdf jena rdfs

写RDF

我有一个模型RDF,我想把它写在一个文件中。这将是结果:

@prefix dc:      <http://purl.org/dc/elements/1.1/> .
@prefix legal:   <http://www.linked-usdl.org/ns/usdl-legal#> .
@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
@prefix vann:    <http://purl.org/vocab/vann/> .
@prefix org:     <http://www.w3.org/ns/org#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix price:   <http://www.linked-usdl.org/ns/usdl-price#> .
@prefix usdl:    <http://www.linked-usdl.org/ns/usdl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dei:     <http://dei.uc.pt/rdf/dei#> .
@prefix gr:      <http://purl.org/goodrelations/v1#> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .

rdf:Standard_M1__Small_default
      rdfs:CPU "1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit)"^^xsd:string ;
      rdfs:RAM "1.7"^^xsd:float ;
      rdfs:Platform "32-bit"^^xsd:string ;
      rdfs:Storage "160"^^xsd:float .
      rdfs:IOPerformance "Moderate"^^xsd:string ;
      rdfs:EBS-OptimizedAvailable
              "false"^^xsd:boolean ;
      rdfs:OS "Linux/UNIX"^^xsd:string ;
      rdfs:Cost "0.08"^^xsd:float ;

但是,当执行model.write(out,lang);时,三元组按字母顺序排列(CPU,COST,ESB ......)。当我创建模型时,按照我想要的顺序放置属性并工作。但是当我编写模型时,它按字母顺序排列。如何忽略按字母顺序编写RDF模型?另一个问题,这个rdf文件是否正确?

感谢。

1 个答案:

答案 0 :(得分:3)

RDF不合法

在结束时遗失.

问题中的RDF文件格式不正确。像

这样的表格
s p1 o1 ;
  p2 o2 ;
  p3 o3 .

应以句号结束。看起来您可能只是向我们展示了文件的前几行。

在RDF和RDFS命名空间中定义您自己的术语

这在技术上可能不会被禁止,但在某些序列化中,RDF命名空间中实际上不是RDF词汇表的术语会引起警告,因此像rdf:Standard_M1__Small_defaultrdfs:Platform之类的术语可能是馊主意。例如,见

  

5.1 The RDF Namespace and Vocabulary

     

RDF词汇表由此命名空间名称标识并包含   仅限以下名称:...未定义任何其他名称   遇到时应该生成警告,否则应该生成警告   表现正常。

订单无关紧要

RDF是基于图形的数据表示。 RDF图是三元组的,并且集合没有订单。可以通过许多不同的方式序列化相同的RDF图。 Turtle 比某些格式更易于人类阅读和写入,但它只是无序数据格式的表示。因为它是无序的数据表示,所以没有真正的理由让实现记住添加内容的顺序。因此,可能没有简单的方法来维护序列化的任何特定顺序。