OWL:创建一个具有多个需要关联的对象属性的类定义?

问题描述 投票:0回答:0

我试图根据对象属性之间的关系来定义一个类。我不确定它是否可以在 OWL/Protege 中表达,并希望得到一些意见。此外,即使可能,我想知道 Protege 是否能够在给定类定义对象实例的情况下推断出该类的新个体。

我会用一个简单的例子来说明:

  • 有任务和资源。 (

    Task ⊑ Thing
    ,
     Resource ⊑ Thing
    )

  • 任务需要资源。 (

    Task ⊑ requires.Resource
    ) 与逆
    requiredBy

  • 共享资源依赖(

    SRD
    )是指至少两个任务需要相同的资源。我要创建的 SRD 类必须至少有两个任务需要相同的资源(即
    >=2 hasTask.Task
    ),并且只有 1 个资源(即
    =1 hasResource.Resource
    )必须是链接任务都依赖的资源。

考虑以下情况:

  1. 有2个资源(R1,R2)
  2. 有4个任务(T1、T2、T3、T4)
  3. T1 和 T2 需要 R1
  4. T3 和 T4 需要 R2

在这种情况下,应该有两个 SRD 实例,其中第一个实例有两个“hasTask”属性与任务 T1 和 T2,以及一个“hasResource”属性与 R1。第二个实例有两个带有任务 T3 和 T4 的“hasTask”属性,以及带有 R2 的 1 个“hasResource”属性。

任何想法:

  1. 如果有的话,在这种情况下如何定义 SRD?
  2. 如果不能直接表达,是否有任何建议的解决方法(例如,在本体中定义任务、资源及其关系,然后通过一些 rdflib python 脚本在外部定义 SRD 实例)?

到目前为止,我有

SRD ⊑ =1 hasResource.Resource ⊓ >=2 hasTask(Task ⊓ requiredBy.Resource)
。但是这个定义当然有两个问题:

  1. 不保证
    hasResource
    关系中的资源与
    Resource
    关系中的
    hasTask
    相同
  2. 不能保证
    Tasks
    关系中的 >=2
    hasTask
    需要相同的
    Resource
    .
sparql owl protege rdfs description-logic
© www.soinside.com 2019 - 2024. All rights reserved.