rdf - OWL 我怎么知道某个东西应该是类还是实例?

标签 rdf semantic-web owl ontology rdfs

我正在尝试构建一个本体来表示属性( Assets ),该属性应该具有诸如别墅或公寓之类的类型...

我的问题是我不知道别墅和公寓应该是类还是实例。 我怎么知道 ?

我正在考虑开设一个名为 Property 的类(class)和称为 isTypeOf 的关系和一个名为 PropertyType 的类,它有两个实例 apartmentvilla .请问这是正确的吗?或者我应该制作 ApartmentVilla作为 PropertyType 的子类的类类(class)?

最佳答案

我认为,您在这里结合了两个区别,您可能想分别争论:

  • 什么时候应该使用子类化,什么时候应该使用属性引用?
  • 我什么时候应该在 TBox 级别(子类化)和什么时候在 ABox 级别(属性值、实例)表示区分?

  • (1) 与旧的inheritance or delegation 差不多问题。答案也或多或少相同:当歧视是所代表对象的固有属性,当歧视属性是你的知识模型的核心,当歧视属性没有独立存在的理由时,使用继承。

    另一方面,当区分属性仅向您的类/对象添加附加信息或有足够的理由“存在”其自身(即不完全仅与引用对象相关联)时,请使用委托(delegate)。在您的情况下:检查,有多少信息取决于 PropertyType这取决于 PropertyType本身而不是个人Property .如果有诸如“带游泳池和环形车道的别墅”之类的东西,并且这种区别很重要并且可以重复使用,您可能会考虑委托(delegate)。

    (2) 遵循相同的函数依赖关系。

    我个人的经验法则是
  • 让它成为 类(class) 如果您希望基于分割制定其他公理,即如果您需要引用分割集,如果您需要附加数据或对象属性,或者如果您希望可能需要进一步细化(想想 LuxuryApartmentGarden只能附加到 Villa 等)。
  • 让它成为 类(class) 如果您希望本体是确定的,并且新的子分类预计很少见。但请注意,您的期望可能是错误的。
  • 让它成为 房产 如果属性值没有引入或非常有限的功能依赖关系,并且如果不期望区别本身具有任何附加属性。

  • 但是,一般来说不一定有正确或错误。

    专业类(class)

    如果 ApartmentVilla是类,那么很容易基于这些类制定额外的公理。例如,假设只有 Property s 是 Villa允许s拥有花园:
    (∃ hasPropertyFeature . Garden) ⊑ Villa
    

    如果您尝试使用 hasPropertyType data 属性,你最终会得到类似的东西
    (∃ hasPropertyFeature . Garden) ⊑ (∃ hasPropertyType . "villa"^^xsd:string)
    

    这不仅更难掌握,而且推理起来也更慢。此外,可以对类进行子类化,即有一种直接的方法可以进行额外的分割。

    反对类

    但是,拥有 hasPropertyType没有附加限制的属性允许您纯粹在实例级别添加附加属性值,而无需触及原始本体。

    如果 townHouse只要是新的属性类型,基于类的版本需要改变原本体的TBox并添加一个新的TownHouse类(class)。虽然这通常是没有问题的(大多数时候是保守的扩展),但它仍然是一个 TBox 更改,您基本上需要为此类更改创建一个新版本的本体。

    这是版本——然而——当属性引入功能依赖时变得不太可行;往上看。

    关于rdf - OWL 我怎么知道某个东西应该是类还是实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29459108/

    相关文章:

    apache-spark - 如何将Virtuoso分布式版本链接到Hadoop

    semantic-web - 是否可以用 OWL 表示充分条件关系?

    seo - JSON-LD:报告模式类型的正确语法是什么?

    java - 如何将 Modellica 代码转换为 Ontologies (.owl)?

    java - Protege-OWL : java. lang.NoClassDefFoundError

    html - GEDCOM 到 HTML 和 RDF

    sparql - 关于云+GraphDB的问题

    android - Android 上的 RDF 数据库

    collections - rdf:sparql 中的集合

    semantic-web - 如何使用:notIncludes in Notation 3 rules?