【问题标题】:owl: how to express AllFemaleGame猫头鹰:如何表达AllFemaleGame
【发布时间】:2018-09-06 21:39:38
【问题描述】:

AllFemaleGame 是一个类,对应于所有玩家和观察者都是女性的游戏的类。

类:

声明(类(ns:Game))

声明(类(ns:Person))

声明(Class(ns:Female))

声明(类(ns:Observer))

子类:

SubClassOf(ns:Female ns:Person)

对象属性:

ObjectProperty(ns:isPlayerOf)

ObjectPropertyDomain(ns:isPlayerOf ns:Person)

ObjectPropertyRange(ns:isPlayerOf ns:Game)

EquivalentClasses(m:AllFemaleGame ObjectIntersectionOf(m:Game ObjectAllValuesFrom(m:isPlayerOf m:Female) ObjectAllValueFrom(m:isObserverOf m:Female)))

我做得对吗?

【问题讨论】:

  • 我理解“子类:人的女性”意味着女性是人的子类。为什么不这样说,用英语,而不是使用没人知道的伪代码语法?然而,带有“对象属性”的行更加神秘。如果你不知道表达你想要什么的正式语法,请用英语说出来。 Stack Overflow 主要面向编码人员这一事实并不意味着您必须根据代码编写所有内容!不过,最后一个带有“EquivalentClasses”的部分是有效的 OWL 2 函数式语法。也许你可以用那种语法重写其余部分?
  • 我的直觉是“isPlayerOf(Person) => Game”的意思是isPlayerOf的域是Person,范围是Game。或者,如果 Person isPlayerOf 某事物,那么该事物就是一个 Game。在这种情况下,您认为 EquivalentClasses 部分是错误的。
  • 谢谢,已编辑。我希望现在更清楚了。

标签: owl


【解决方案1】:

类表达式ObjectAllValuesFrom(m:isPlayerOf m:Female)描述了事物x,如果xm:isPlayerOfy,那么y em> 是m:Female。而且m:isPlayerOf的域是m:Person,范围是m:Game,所以如果存在这样的y,那么x就是一个人,而y 一个游戏。看来你把它弄错了方向。试试这个:

EquivalentClasses(
    m:AllFemaleGame
    ObjectIntersectionOf(
        m:Game
        ObjectAllValuesFrom(ObjectInverseOf(m:isPlayerOf) m:Female)
        ObjectAllValueFrom(ObjectInverseOf(m:isObserverOf) m:Female)
    )
)

请注意,此类还包含没有玩家或观察者的游戏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-30
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多