将JSON模式中的数组映射到OWL
我试图将JSON模式中定义的数组映射到OWL2 这是JSON模式的一个简单示例:将JSON模式中的数组映射到OWL,json,mapping,owl,jsonschema,ontology,Json,Mapping,Owl,Jsonschema,Ontology,我试图将JSON模式中定义的数组映射到OWL2 这是JSON模式的一个简单示例: { "properties": { "nm_prop": { "type": "array", "items": {"type": "number"} } } } :nm_prop subPropertyOf owl:topObjectProperty :nm_prop rdfs:domain :JS_id :nm_prop rdfs:ra
{
"properties": {
"nm_prop": {
"type": "array",
"items": {"type": "number"}
}
}
}
:nm_prop subPropertyOf owl:topObjectProperty
:nm_prop rdfs:domain :JS_id
:nm_prop rdfs:range OntoDT:OntoDT_110287
这是由上述JSON模式生成的OWL代码:
{
"properties": {
"nm_prop": {
"type": "array",
"items": {"type": "number"}
}
}
}
:nm_prop subPropertyOf owl:topObjectProperty
:nm_prop rdfs:domain :JS_id
:nm_prop rdfs:range OntoDT:OntoDT_110287
是定义数组的本体
问题是如何在OWL中定义数组的元素是某种数据类型(例如xsd:string或xsd:integer)
基于cmungall的响应,我为上面的JSON模式示例提出了一个新的定义 我的目标是将JSON模式映射到OWL,以便以后在数据集成应用程序中使用 使用原始问题的JSON模式示例和cmungall的解释,OWL中模式的一种可能表示形式是:
:JS_id rdf:type owl:Class .
:array_integer rdfs:subClassOf OntoDT:OntoDT_110287 ,
[ rdf:type owl:Restriction ;
owl:onProperty OntoDT:OntoDT_0000405 ;
owl:allValuesFrom xsd:integer ] .
:nm_prop rdfs:subPropertyOf owl:topObjectProperty ;
rdfs:domain :JS_id ;
rdfs:range :array_integer .
其中:
- :JS_id是主类
- array_integer是数组数据类型的定义,它扩展了OntoDT中的数组定义
- 数组_integer有一个限制:它只接受整数
- nm_prop是模式中的数组atribute
还有一个新问题:这样写对了吗?它是否等同于示例中的JSON模式?有多种方法可以在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”是定义数组、ArrayElement和其他属性类的词汇表
然后,您可以定义(为了清晰起见,切换到曼彻斯特语法):
并将数组断言为此类型
您可以添加其他公理,声明my:value和my:index是函数式的
但这里值得停下来问问你更广泛的目标是什么。OWL不是一种表示和推理计算数据结构的好语言。首先,OWL提出了开放世界假设,并用于推理数据结构(例如,出于验证目的)您通常需要封闭世界的假设。但是,在某些情况下,这可能与您的用例相符,例如,如果您想对程序或数据结构的不完整信息进行推理。但即使如此,可能还有其他更适合的逻辑分支
通常情况下,当在计算机程序中将某个对象建模为数组时,OWL中有一个更自然的非数组表示。例如,如果我们想表示一个跑步者列表,该列表按其在比赛中的终点位置排序,则更自然的做法是为每个跑步者建模比赛终点事件,以及定时,并在查询时派生数组
我不知道您的确切用例,但希望这与您相关。您好。根据您的评论,我在问题文本中进行了扩展。也许这可以解决我的问题。