在执行 Shex 验证时,如何在 RDF 中允许不可预见的属性?
How do you allow not foreseen properties in RDF when performing Shex validation?
我们正在创建 Shex 定义文件,以检查某些 IRI 是否属于给定类型。我们生成的代码没有问题,但有时我们会得到使用 Protege 生成的文件,并且大多数人的类型都是 X
加上 owl:NamedIndividual
,这使得我们的验证失败,因为现在给定的资源有 2 个类型的断言rdf:type
.
将 owl:NamedIndividual
添加到所有形状检查似乎污染了形状定义,那么如何允许与形状定义不冲突的额外属性?
在 Shex 中,默认情况下三重约束是 封闭的,这意味着像这样的形状:
:Shape {
rdf:type [ :X ]
}
表示符合:Shape
的节点必须恰好有一个rdf:type
声明其值为:X
.
如果要允许 rdf:type
声明有额外的值,可以用关键字 EXTRA
表示为:
:Shape EXTRA rdf:type {
rdf:type [ :X ]
}
现在的意思是一个一致的节点必须有 rdf:type :X
并且可以有 rdf:type
的零值或模式值。
注意前面的例子可以定义为:
:Shape EXTRA a {
a [ :X ]
}
在特定情况下,您只想允许一个额外的 rdf:type
,值为 owl:NamedIndividual
,您也可以将其定义为:
:Shape {
a [:X ] ;
a [ owl:NamedIndividual] ;
}
或如:
:Shape {
a [:X owl:NamedIndividual]{2} ;
}
我们正在创建 Shex 定义文件,以检查某些 IRI 是否属于给定类型。我们生成的代码没有问题,但有时我们会得到使用 Protege 生成的文件,并且大多数人的类型都是 X
加上 owl:NamedIndividual
,这使得我们的验证失败,因为现在给定的资源有 2 个类型的断言rdf:type
.
将 owl:NamedIndividual
添加到所有形状检查似乎污染了形状定义,那么如何允许与形状定义不冲突的额外属性?
在 Shex 中,默认情况下三重约束是 封闭的,这意味着像这样的形状:
:Shape {
rdf:type [ :X ]
}
表示符合:Shape
的节点必须恰好有一个rdf:type
声明其值为:X
.
如果要允许 rdf:type
声明有额外的值,可以用关键字 EXTRA
表示为:
:Shape EXTRA rdf:type {
rdf:type [ :X ]
}
现在的意思是一个一致的节点必须有 rdf:type :X
并且可以有 rdf:type
的零值或模式值。
注意前面的例子可以定义为:
:Shape EXTRA a {
a [ :X ]
}
在特定情况下,您只想允许一个额外的 rdf:type
,值为 owl:NamedIndividual
,您也可以将其定义为:
:Shape {
a [:X ] ;
a [ owl:NamedIndividual] ;
}
或如:
:Shape {
a [:X owl:NamedIndividual]{2} ;
}