4

稍微简化一下,我有一个用 OWL 表示的域本体 (D),它描述了设备、它们的功能、配置。此外,对于每个供应商,我希望拥有特定于供应商的本体 (V),它将连接到域之一。问题是,如何对齐 D 和 V?让 V 尽可能接近供应商条款是否可行,或者只是将 D 的类子类化为 V(并且可能对数据属性和对象属性做同样的事情)?这个想法是应用程序使用本体 D 进行查询,推理机制尽可能地隐藏供应商细节。

第一个变体似乎更合乎逻辑(毕竟语义技术是关于互连的),但我可以预见到某些数据类型中的一些不匹配。例如,一家供应商可以用百分比表示电池电量,另一家则使用高、中、低等词。我不确定如何使用 OWL 将这些数据带到共同点。可能还有更难的情况,需要正则表达式应用程序和通常完成的任何脚本巫术。(同样有趣的细节是直接使用数据属性还是通过“包装”数据属性与每个数据属性的对象属性和概念来添加一层间接层,以便为类型错误做更多准备)。

换句话说,输入数据似乎应该在进入RDF生态系统之前进行预处理......或者也许还有其他可能性?

(对于那些倾向于快速将问题标记为重复的人,我不是在问两个本体之间的映射之类的东西,而是在 OWL 本身中安排“对齐”作为预处理与更丰富的“适配器模式”)

4

1 回答 1

5

通常,您可以通过创建一个新的本体 O 来连接这两个本体,该本体同时导入 D 和 V,并定义一组与其中的类和属性相关的公理。

第一个变体似乎更合乎逻辑(毕竟语义技术是关于互连的),但我可以预见到某些数据类型中的一些不匹配。例如,一家供应商可以用百分比表示电池电量,另一家则使用高、中、低等词。我不确定如何使用 OWL 将这些数据带到共同点。

这实际上是您可以在 OWL 中处理的情况。例如,假设 V1 有一个对象属性hasPowerLevel,它将电池与个体HighMediumLow之一相关联。假设 V2 有一个数据类型属性hasPercentageRemaining,它将PowerCell与[1,100]范围内的整数相关联。您首先要确定BatteryPowerCell之间的关系。例如,这可能是以下任何一种,或者完全是其他东西。这将取决于类的特定语义。

    Battery ⊑ PowerCell
    PowerCell ⊑ Battery
    PowerCell ≡ Battery
    Battery ⊑ PowerCell ⊓ ∃ hasPowerSource-1

Then you'd have to relate the properties. This could be along the lines of

    (hasPowerLevel value High) ≡ (hasPercentageRemaining some integer[>= 66])
    (hasPowerLevel value Medium) ≡ (hasPercentageRemaining some integer[<= 66, >= 33])
    (hasPowerLevel value Low) ≡ (hasPercentageRemaining some integer[<= 33])

That's just one example, but it shows that you can actually do a lot of this "bridging" within OWL. hasPowerLevel

There maybe even harder cases, requiring regex application and whatever scripting voodoo is usually done. (It is also interesting detail whether to use dataproperties directly or add one more layer of indirection by "wrapping" dataproperties with object properties and concepts per dataproperty to be more prepared for typemismatch).

Those OWL datatype facets (e.g., how we specified ranges of integers) can also handle regex restrictions. That said, it's true that it may often be easier to do some amount of intermediate connecting before uniting everything within OWL. SWRL rules can be helpful here, as can dropping things down to the RDF level and doing some rule-based processing with SPARQL or SPIN.

While there's lots of research in this area, there's not really any magic bullet or solution that will work everywhere. Anything that claims to be universally applicable is going to be so very high level that its practical application will require answering most of the same questions you're already asking. There are some general methodologies that might be useful, but we'd really need some specific situations to be able help with those.

于 2015-05-02T01:30:38.927 回答