gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:01:19 25 4
gpt4 key购买 nike

我正在尝试构建一个本体来表示属性( 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com