将RDF项特征建模为子类或作为对其他个体的引用



我想知道将RDF项特征建模为的含义(即优点和缺点(是什么

  1. 类(即属于一个子类的个体(
  2. 指代代表一个特征的另一个抽象个体的个体

我不想使用数据属性。我需要用他们的IRI来表示清晰的概念。

示例类型1

@prefix : <http://example.org#> .
:Car a rdfs:Class .
:Subaru rdfs:subClassOf :Car .
:Mercedes rdfs:subClassOf :Car .
:Ferrari rdfs:subClassOf :Car .
:c1 a :Subaru .
:c1 a :Mercedes .
:c1 a :Ferrari .

示例类型2

@prefix : <http://example.org#> .
:Car a rdfs:Class .
:CarModel a rdfs:Class .
:Subaru a :CarModel .
:Mercedes a :CarModel .
:Ferrari a :CarModel .
:c1 a :Car ;
:model :Subaru .
:c2 a :Car ;
:model :Mercedes .
:c3 a :Car ;
:model :Ferrari .

如果这个问题听起来过于宽泛,请原谅。我知道在这些情况下有任何灵丹妙药,我正在努力了解这种不同的建模策略的含义。

这是一个概念建模问题,它不是RDF或OWL独有的,但应用非常普遍。正如你自己所说,没有一个正确的答案。然而,有一些标准可能会帮助你做出这样或那样的决定。

首先,问问自己被建模的属性是否是个人的内在属性?措辞略有不同:任何人都有必要拥有这种财产吗?或者可能有人没有这种财产?如果属性是内在的,那么这是支持使用子类的一点。在您的示例中,可以说属性内在的:没有某种车型,任何汽车都不可能存在。或者举一个不同的例子:任何哺乳动物都不可能不属于其特定的亚型(长颈鹿、老鼠、狗等(。

其次,也是密切相关的:属性是不可变的吗?那么,对于任何个人来说,这处房产的价值会随着时间的推移而变化吗?如果它可以改变,那就是支持使用属性而不是子类。在你的例子中,汽车的模型可能是不可变的(所以这是支持使用子类的另一点(,但如果你添加,比如说,每辆车的颜色,这是可能改变的(通过体面的油漆工作(,这使得它成为使用特性的候选者(此外,如果你认为一辆没有油漆的汽车仍然是一辆汽车,那么颜色可能不是一种内在特性(。

这两个标准都是概念性的,主要涉及本体论在多大程度上反映"真实世界"的问题。可以说,就领域本体的可重用性和可理解性而言,这是很重要的。其他考虑因素可能更实用,可以处理诸如您可能询问的查询类型、两种建模方法中的哪一种会产生尽可能小的数据集(就语句数量而言(等问题。