SPARQL中的推理



对于我的大学,我正在学习RDF/OWL/SPARQL。我正在尝试构建一个利用自动分类的web应用程序,我使用Protege来开发本体。现在我有一个类Smartphone和一个子类Fast_Smartphone,它的等价属性设置为:

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

现在,当我转到DL查询选项卡并选择Fastrongmartphone类的实例时,它成功地显示了所有智能手机实例,这些实例具有4个或更多核心。但是,当我到达SPARQL查询选项卡并键入以下查询时:

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

它没有给出任何结果。使用以下查询:

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

成功返回:
x
等效类

y

智能手机和(hasCores某个整数[>=4])

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

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

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

最新更新