当编写RDF和RDFS时,是应该创建一个覆盖两者的单一文档?还是创建两个独立的文档?与XML和XSD类似。
任何一种方法都可以,这只是取决于您自己的偏好。实际上,您可以根据自己的需要将RDF(S)数据分为一个、两个或多个文件。
需要注意的是:对于小型/简单的数据集,将所有内容放在一个文件中可能更方便,但是一旦您开始使用较大的模式(或更多的实例数据),有一些分离可能会使处理数据更加灵活。
我认为你不是在问RDF和RDFS的区别,而是在问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> .
是否在同一文档中包含TBox和ABox主要取决于您的工作流程。选择对您来说更容易的方式。
有分离文档的可能原因:
其他人可能想要利用您的TBox中定义的术语来处理自己的数据。他们可以获取带有您的TBox的文档(例如导入到他们的本体工具中),而不必获取ABox(他们甚至可能对此不感兴趣)。
(反之亦然。有些人可能只对您的ABox感兴趣。)
您的ABox可能变得非常大,以至于将其放在一个文档中不再可行。您可以将TBox放在自己的文档中,将ABox放在多个文档中,而不是在每个文档中重复您的TBox(不必要)或仅在第一个文档中拥有它(不一致)。
如果您想为ABox和TBox使用不同的语法(出于任何原因)。
:Alcohol owl:oneOf(:Vodka :Champagne :Bourbon :Tequila :Whiskey)
。 - Stanislav Kralin