【问题标题】:Make every value of one property less than every value of another property?使一个财产的每个价值都小于另一个财产的每个价值?
【发布时间】:2014-05-15 06:46:08
【问题描述】:

我刚开始使用 Protégé 4.3 学习 OWL,现在我面临一个难题。我已经定义了一个带有一些限制超类的 A 类,以确保每个 A 都有一个来自 P1 和 P2 的属性值,并且每个 P1 和 P2 都有一个双精度值:

A ⊑ ∃hasProperty.(P1 ⊓ ∃hasValue.xsd:double)
A⊑ ∃hasProperty.(P2 ⊓ ∃hasValue.xsd:double)

如何断言 A 的 P1 值都小于所有 P2 值?

【问题讨论】:

  • 你在这方面有什么进展吗?

标签: semantic-web owl ontology protege description-logic


【解决方案1】:

你不能用 OWL 公理做到这一点

这是一个有趣的问题,但很遗憾,您无法使用纯 OWL 公理来解决这个问题。通常,通过使用限制超类,很容易说出类个体所具有的值,但很难或不可能说出属性值之间的关系。例如,您不能说一个人的姓氏属性必须与姓氏属性的值相同。

首先澄清一些术语很重要,尤其是术语限制

我想定义一个限制,对于 A 的所有个体,p1 的值是 总是小于 p2 的值

一个限制是一个。例如,限制likes some Person 是个人的,每个人都喜欢某个人。我们经常使用限制作为其他类的超类来确保某些约束成立。例如,当我们说

Person subClassOf hasName some xsd:string

我们是说每个人都有一个属性 hasName 的值,它是一个 xsd:string。

你可能可以用 SWRL 做到这一点

您可以断言,如果某物是 A 的成员并且具有 p1 和 p2 值,则 p1 必须小于 p2。这看起来像:

A(?a) ∧
hasProperty(?a,?p1) ∧ P1(?p1) &楔形; hasValue(?p1,?v1) ∧
hasProperty(?a,?p2) ∧ P2(?p2) &楔形; hasValue(?p2,?v2)
→
swrlb:lessThan(?v1,?v2)

这将确保 A 上的每个 P1 值都小于 A 上的每个 P2 值。如果您曾经断言某些数据违反了这一点,那么就会出现不一致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-09
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2015-12-29
    • 2012-03-12
    相关资源
    最近更新 更多