SPARQL 中的推理

Reasoning in SPARQL

对于我的大学,我正在学习 RDF/OWL/SPARQL。我正在尝试构建一个使用自动 classification 的网络应用程序,我使用 Protege 开发 ontology。现在我有一个 class 智能手机和一个 subclass Fast_Smartphone,相当于 属性 设置为:

Smartphone
and (hasCores some integer[>=4])

现在,当我转到 DL 查询选项卡和 Fast_smartphone class 的 select 个实例时,它会成功显示所有具有 4 个或更多内核的智能手机实例.但是,当我转到 SPARQL 查询选项卡并键入以下查询时:

SELECT *
    WHERE { ?x ?y uni:Fast_smartphone}

没有结果。使用以下查询:

SELECT *
        WHERE {uni:Fast_smartphone ?x ?y }

成功 returns:
x
等效类

y

智能手机和(有一些整数[>=4])

推理机已开启并同步(隐士)。 我不知道为什么它不会 return 与 DL 选项卡相同的结果。我做错了什么吗?

Protege 中的

SPARQL Query 不允许推理。 Hermit 是一个非常好的分类推理器,但我不认为它用于 RL 推理。

我通常在 Protege 上构建我的 ontology 并使用 Hermit 测试一致性和分类。但是,当我需要使用 SPARQL 查询数据集时,我会导出数据并将其放入三元组中(在我看来,Stardog 是一个不错的选择)。