RDF和RDFS是两个独立的文档吗?



在编写RDF和RDFS时,你应该创建一个涵盖两者的文档吗?还是创建两个单独的文档?类似于 xml 和 xmls。

任何一种方法都可以,这完全取决于您自己的喜好。事实上,您可以根据需要将RDF(S)数据拆分为一个,两个或多个文件。

需要记住的一些事项:对于小型/简单的数据集,将所有内容放在单个文件中可能更方便,但是一旦开始使用更大的架构(或更多的实例数据),进行一些分离可能会使处理数据更加灵活。

我认为这实际上归结为可重用性的问题。例如,目前您有:

  • 一个。 架构
  • B. 一些实例数据的集合

鉴于您有这两件事,您有两种选择:

  • X. 包含架构 (+) 和实例数据的单个文档
  • 两份文件:
    • Y.1 一个用于架构 (**)
    • Y.2 一 实例数据的收集

现在,如果预计将来会有另一个实例数据集合(与第一个不同),那么有两个选项:

  • 两个文件:
    • X.1 一个具有架构 (+) 和实例数据的第一个集合
    • X.2 一个与架构 (+) 和第二个实例数据收集
  • 三个文件:
    • Y.1 具有架构 (**) 的
    • Y.2 具有首次收集实例数据的
    • Y.3 一个,第二个实例数据收集

如果您采用第二种方法,您最终会得到三个文档,但标记为 (**) 的文档会继承第一种方法,您不必担心保持同步。 在第一种方法中,您最终需要确保标记为 (+) 的架构副本在这两种情况下都是相同的,并且您要在多个位置复制该信息。

在实践中,其中哪一个更重要可能取决于您期望将来必须处理的内容。

ABox vs. TBox

我想你问的不是RDF与RDF,而是ABox(断言组件)与TBox(术语组件)。

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ex: <http://example.com/vocabulary/> .
# TBox
ex:Person rdf:type rdfs:Class .
ex:hasName 
rdf:type rdf:Property ;
rdfs:range rdfs:Literal .
# not using rdfs:domain, because other things than ex:Person could have an ex:hasName
# ABox
<https://example.com/team/alice#i> 
rdf:type ex:Person ;
ex:hasName "Alice" ;
rdfs:seeAlso <https://example.com/team/alice> .

如这个例子所示,这两个部分(ABox和TBox)都可以使用两个词汇表(RDF和RDFS)。根据RDF和RDFS的使用来分离这些语句是没有意义的。

单独的文件?

是否将 TBox 和 ABox 放在同一个文档中主要取决于您的工作流程。选择对您来说更容易的方式。

拥有单独文件的可能原因:

  • 其他人可能希望将 TBox 中定义的术语用于他们自己的数据。他们可以使用您的 TBox 获取文档(例如,将其导入他们的本体工具),而无需获取 ABox(他们甚至可能不感兴趣)。

    (反之亦然。有些人可能只对你的ABox感兴趣。

  • 您的 ABox 可能会变得如此之大,以至于不再可行将其放在一个文档中。与其在每个文档中重复您的 TBox(不必要的),或者仅在第一个文档中重复 TBox(不一致),您可以将 TBox 放在自己的文档中,将 ABox 放在多个文档中。

  • 如果要对 ABox 和 TBox 使用不同的语法(无论出于何种原因)。

最新更新