首页 > 解决方案 > 查询 OWL 本体

问题描述

在 OWL 本体中,我们必须将类与某个整数联系起来。例如,我们有一个 LWM2MTemperatureObject 类,它的 objectID 始终为 3303。
(我们正在对LwM2M 规范的一个子集进行建模, 其中我们描述了对象和资源之间存在哪些连接)。LwM2M 本体是使用Protégé
编辑 的。我们通过设置 to 来完成链接。Subclass of'hasObjectID' value 3303

问题 1&2 用于更好地理解,问题 3 是我们想要完成的。

问题1)根据我的理解,这意味着如果我们用RDF(使用Turtle)说:

:mySensor a lwm2m:LWM2MTemperatureObject

我们可以自动推断:mySensor lwm2m:hasObjectID 3303,对吧?

问题 2)如果我们说:

:myOtherSensor lwm2m:hasObjectID 3303

那么我们可以推断:myOtherSensor a lwm2m:LWM2MTemperatureObject如果它也符合 施加的其他限制Subclass of。(正确的?)

问题 3)

在 javascript 应用程序中,我们希望通过使用链接 ID (3303) 来发现某个主题 ( :mySensor2) 属于哪个类。目前,我们使用我们的 OWL 本体以海龟格式序列化的事实,如下所示:
图:我们本体的子集,在 RDF 中可视化

我们对 OWL 本体的 RDF 结构使用精确的 SPARQL 查询。

        PREFIX lwm2m: <${ontology}>
        PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
        PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
        PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
        PREFIX owl: <http://www.w3.org/2002/07/owl#> 
        SELECT ?objectName
        WHERE
                {
                        ?objectName rdfs:subClassOf lwm2m:Object, ?blank .
                        ?blank owl:onProperty lwm2m:hasObjectID ;
                                owl:hasValue "3303"^^xsd:integer .
                }

通过这个查询,我们就得到了我们想要的类。

这当然取决于我们使用 Turtle 语法来存储我们的本体这一事实。

问题是:如何在不依赖于存储格式的语法的情况下完成此操作,最好使用 Javascript 库。(我们在 Javascript HyLAR中找到了一个推理器,但我们应该如何进行呢?

编辑: 例如,我们可以将本体存储为 OWL/XML 语法,然后我们的“将本体加载为 RDF 图”的方法在没有进一步工作的情况下将无法工作。
自从看到

每个表示为这种概念结构的实例的 OWL 2 本体都可以转换为 RDF 图 [OWL 2 RDF Mapping];

OWL 2 语法参考)我认为这可能只是一个技术问题。

因此,所有 OWL 本体都可以转换为 RDF。

重新表述问题 3)
明确查询我们的本体在 RDF 中具有类似 (?)的结构 (视觉
) 是不错的: 类 --> 空白节点 --> 3303

或者我们应该使用哪种其他方法来查找类?

提前感谢您的帮助!
让我知道是否需要添加任何信息。

信息:

使用的海龟前缀:

@prefix : <http://example.com/deviceWithSensors#>
@prefix lwm2m: <https://iotsolidugent.inrupt.net/public/ontologies/omalwm2m.owl.ttl#>

标签: javascriptrdfowl

解决方案


推荐阅读