我正在使用Jena编写一个描述在线帖子的rdf文件。例如,根据我正在使用的sioc本体/命名空间,有以下内容:
在Jena中,我如何将sioc:Post包含在文件中
<sioc:Post rdf:about="http://example.com/vb/1035092"> 而不是
<rdf:Description rdf:about="http://example.com/vb/1035092">最好的做法是什么?
发布于 2013-08-13 12:14:19
到目前为止,这两个答案都提出了一些好的观点:
rdf:Description元素,这些元素将包含rdf:type元素来指示所描述元素的类型。但是,RDF/XML序列化格式定义了许多缩写,可以用来使图的序列化更短、更易读,在某些情况下更像传统的XML文档。其他人提到,使用类型作为元素名只是其中一个缩写,但我认为在这一点上值得研究一下规范。这个特殊的缩写在2.13类型节点中定义。RDF图通常有来自主题节点的
rdf:type谓词。它们通常称为图中的类型化节点,或RDF/XML中的类型化节点元素。RDF/XML允许更简洁地表达这个三元组。通过将rdf:Description节点元素名称替换为对应于类型关系值的RDF URI引用的命名空间元素。当然,可能有多个rdf:type谓词,但只能以这种方式使用其中一个,其他谓词必须保留为属性元素或属性。 在RDF/XML中,RDF词汇中的内置类通常使用类型化节点元素:rdf:Seq、rdf:Bag、rdf:Alt、rdf:Statement、rdf:Property和rdf:List。 例如,可以编写示例14中的RDF/XML,如例15所示。rdf:type(example14.rdf示例14:使用rdf:type(example15.rdf output 示例15:使用类型化节点元素替换rdf:type(example15.rdf输出 example15.nt)的完整示例
如果使用的是Jena,则可以对RDF/XML输出的格式化方式进行广泛的控制。文档的高级RDF/XML输出部分记录了这些选项。但是,对于您想要的情况,只需在RDF/XML和RDF/XML-ABBREV中序列化就可以解决您想要做的事情。例如,使用Jena命令行rdfcat工具查看结果。以下是我们的数据(以海龟为单位):
# The actual namespace doesn't matter for this example.
@prefix sioc: <http://example.org/> .
<http://example.com/vb/1035092>
a sioc:Post ;
sioc:has_creator "someone" .让我们将其转换为简单的RDF/XML:
$ rdfcat -out RDF/XML data.n3
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:sioc="http://example.org/" >
<rdf:Description rdf:about="http://example.com/vb/1035092">
<rdf:type rdf:resource="http://example.org/Post"/>
<sioc:has_creator>someone</sioc:has_creator>
</rdf:Description>
</rdf:RDF>现在,让我们将其转换为RDF/XML-缩写:
$ rdfcat -out RDF/XML-ABBREV data.n3
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:sioc="http://example.org/">
<sioc:Post rdf:about="http://example.com/vb/1035092">
<sioc:has_creator>someone</sioc:has_creator>
</sioc:Post>
</rdf:RDF>在第一种情况下,可以看到rdf:Description元素具有rdf:type和sioc:has_creator子元素,但在第二种情况下,您看到的是只包含sioc:has_creator子元素的sioc:Post元素。
至于最佳实践,我不知道这真的很重要。RDF/XML-缩写通常会更短一些,因此将减少传输、磁盘存储的网络开销,并且更容易阅读。不过,更简单的RDF/XML将更快地编写。在大多数图表中,这不会有太大的区别,但是生成RDF/XML-缩写可能会非常昂贵,正如最近在耶拿邮件列表上的一个帖子所讨论的。
发布于 2013-08-13 11:11:07
你真的不应该被挂起你的数据的计算机可读输出是什么样子。Jena生成有效的RDF,任何其他的RDF解析器/框架都将能够读取它,并允许您使用它进行操作。
您想要的样式格式无效,在您的示例中它需要是rdf:ID,这意味着URI标识的东西是sioc:Post。在后一种情况下,这基本上只是一个有关该URI的内容的容器;您将看到一个单独的rdf:type三重,以断言个体是sioc:Post。
但说真的,要重新迭代,RDF输出的外观与此无关。如果你想让它看起来像一个特定的方式,因为你要手工编辑它,不要。去找一个工具,如Protege或TopBraid,并使用它。
发布于 2013-08-13 11:45:37
Jena有两个RDF/XML编写器。使用RDF/XML-ABBREV获得更易读的格式。
然而,正如迈克尔正确地说的那样,不要为这件事而烦恼。解析者不在乎。
https://stackoverflow.com/questions/18204160
复制相似问题