如何使用 SQWRL 查询与另一个 class 的个体相关的 class?

How to use SQWRL to query a class that is related to an individual of another class?

我是 SQWRL 的新手,所以我正在 ontology 我在课程中创建的 ontology 中做一些测试。

在那ontology里面,有一个class叫BallpointPen,有一些圆珠笔的子classes;此外,还有一个名为 PenCharacteristic 的 class,它具有作为个体的笔的可能特征。

我想验证哪些圆珠笔(class 是 class BallpointPen 的子classes)具有 Refillable 特性(这是一个独立的class PenCharacteristic)。为此,我声明了以下 SQWRL 查询:

tbox:sca(?x, BallpointPen) ^ hasCharacteristic(?x, Refillable) -> sqwrl:select(?x)

它应该指出两个答案:classes MyInnovativeBallpointPen 和 RefillableBallpointPen,但它没有显示任何结果。有人可以帮我解决这个问题吗?

经过一些研究,我发现查询无法完成,至少不能使用 SQWRL,因为它不能同时使用 类 和实例。一种方法是将 BallpointPen sub类(包括我试图做的查询的答案)变成实例。

以 ontology 目前的方式进行查询的唯一方法是使用 DL 查询。在 DL 查询选项卡中(在 Protégé 上),只需键入并执行:

BallpointPen and hasCharacteristic value Refillable

这将显示正确的结果。