首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么某些rdf文件不包含<rdf:Description rdf:about=...>?

为什么某些rdf文件不包含<rdf:Description rdf:about=...>?
EN

Stack Overflow用户
提问于 2013-08-13 08:28:14
回答 3查看 930关注 0票数 2

我正在使用Jena编写一个描述在线帖子的rdf文件。例如,根据我正在使用的sioc本体/命名空间,有以下内容:

  • 类别: sioc:Post
  • 物业: sioc:has_creator

在Jena中,我如何将sioc:Post包含在文件中

代码语言:javascript
复制
<sioc:Post rdf:about="http://example.com/vb/1035092"> 

而不是

代码语言:javascript
复制
<rdf:Description rdf:about="http://example.com/vb/1035092">

最好的做法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-13 12:14:19

到目前为止,这两个答案都提出了一些好的观点:

  • 您不应该太注意RDF图的特定序列化,因为有很多不同的序列化,您应该使用一个公开图形的API来访问它们,而不是序列化。(例如,请参阅我前面的一个答案中的不要使用XPath查询RDF (或OWL),以获得关于依赖于特定的XML序列化的一些注释。)
  • 您所看到的不同之处在于,最简单的RDF/XML序列化将使用大量的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:Seqrdf:Bagrdf:Altrdf:Statementrdf:Propertyrdf: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/XMLRDF/XML-ABBREV中序列化就可以解决您想要做的事情。例如,使用Jena命令行rdfcat工具查看结果。以下是我们的数据(以海龟为单位):

代码语言:javascript
复制
# 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:

代码语言:javascript
复制
$ 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-缩写:

代码语言:javascript
复制
$ 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:typesioc:has_creator子元素,但在第二种情况下,您看到的是只包含sioc:has_creator子元素的sioc:Post元素。

至于最佳实践,我不知道这真的很重要。RDF/XML-缩写通常会更短一些,因此将减少传输、磁盘存储的网络开销,并且更容易阅读。不过,更简单的RDF/XML将更快地编写。在大多数图表中,这不会有太大的区别,但是生成RDF/XML-缩写可能会非常昂贵,正如最近在耶拿邮件列表上的一个帖子所讨论的。

票数 2
EN

Stack Overflow用户

发布于 2013-08-13 11:11:07

你真的不应该被挂起你的数据的计算机可读输出是什么样子。Jena生成有效的RDF,任何其他的RDF解析器/框架都将能够读取它,并允许您使用它进行操作。

您想要的样式格式无效,在您的示例中它需要是rdf:ID,这意味着URI标识的东西是sioc:Post。在后一种情况下,这基本上只是一个有关该URI的内容的容器;您将看到一个单独的rdf:type三重,以断言个体是sioc:Post。

但说真的,要重新迭代,RDF输出的外观与此无关。如果你想让它看起来像一个特定的方式,因为你要手工编辑它,不要。去找一个工具,如Protege或TopBraid,并使用它。

票数 1
EN

Stack Overflow用户

发布于 2013-08-13 11:45:37

Jena有两个RDF/XML编写器。使用RDF/XML-ABBREV获得更易读的格式。

然而,正如迈克尔正确地说的那样,不要为这件事而烦恼。解析者不在乎。

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

https://stackoverflow.com/questions/18204160

复制
相关文章

相似问题

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