将JSON模式中的数组映射到OWL

问题描述 投票:0回答:1

我正在尝试将JSON模式中定义的数组映射到OWL 2。

这是JSON Schema的简单示例:

{
  "properties": {
    "nm_prop": { 
          "type": "array",
          "items": {"type": "number"} 
    } 

  } 
}

这是从上面的JSON模式生成的OWL代码:

:nm_prop subPropertyOf owl:topObjectProperty
:nm_prop rdfs:domain :JS_id
:nm_prop rdfs:range OntoDT:OntoDT_110287

OntoDT:OntoDT_110287是定义数组的本体。

[问题是如何在OWL中定义数组的元素将具有某种数据类型(例如xsd:string或xsd:integer)?

json mapping owl jsonschema ontology
1个回答
0
投票

您可以通过多种方式在OWL中存储数组。但是假设您显式地想要一个数组结构(而不​​是像rdf:list中那样说一个链表),例如形式:

[e_0,e_1,..,e_n]

您可以这样表示:

[] a my:Array ;
  my:length n;
  my:contains
   [
    a my:ArrayElement ;
      my:index 0 ;
      my:value e_0
   ],
   [
    a my:ArrayElement ;
      my:index 1 ;
      my:value e_1
   ],
   ...
   [
    a my:ArrayElement ;
      my:index n ;
      my:value e_n
   ] .

(假设“ my”是一个定义Array,ArrayElement和其他属性的类的词汇表

然后您可以定义(为清楚起见,切换到曼彻斯特语法):

ArrayOfInts EquivalentTo Array and my:contains only (my:value some integer)

并断言您的数组属于这种类型。

[您可以添加其他公理来声明my:value和my:index起作用。

但是值得在这里暂停并询问您更广泛的目标是什么。 OWL不是用于表示和推理计算数据结构的好语言。一方面,OWL进行了开放世界假设,并且出于推理数据结构(例如出于验证目的)的原因,通常需要使用封闭世界假设。但是,在某些情况下,这可能与您的用例相符,例如如果您要推理有关程序或数据结构的不完整信息。但是即使那样,仍然可能存在其他更适合的逻辑分支。

[通常,当在计算机程序中将某些事物建模为数组时,OWL中会有更自然的非数组表示形式。例如,如果我们要表示一个按照他们在比赛中的完成位置排序的跑步者的列表,那么对每个跑步者完成比赛的事件以及时间进行建模就更自然了,并在查询时导出数组。

我不知道您的确切用例,但希望这与您有关。

© www.soinside.com 2019 - 2024. All rights reserved.