javascript - 查询 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#>
解决方案
推荐阅读
- git - 如何删除开发中的所有提交并仅获取原始开发中的提交?
- javascript - 由于使用 angular5 和 javascript 的变换属性,无法从 svg 生成 png
- java - 如何在 WebSphere Liberty 中设置方法级事务超时?
- selenium - 黄瓜使用@Transform标签,如何对不同的行和列多次运行测试
- c++ - c++,删除一个节点使用id
- javascript - 使用 JavaScript 裁剪图像
- android - 如何使用设备字体避免 React Native Application 中的字体缩放
- javascript - 如何在 asp.net 中增加多行文本框中的行距?
- javascript - 在一些滚动后固定 div 前两个 div 并在再次滚动到顶部时重置回来?
- image - 如何在odoo中将图像名称存储为(ir.attachment)中的文件内容?