我们正在创建我们的Shex定义文件,检查某些IRIs是否属于给定的类型。我们生成的代码没有问题,但有时我们会得到使用Protege生成的文件,而且大多数个人都是X + owl:NamedIndividual类型的,这使得我们的验证失败,因为现在给定的资源有2个rdf:type类型的断言。
将owl:NamedIndividual添加到所有形状检查似乎会污染形状定义,那么如何允许不与形状定义冲突的额外属性?
发布于 2019-12-04 13:48:02
在Shex中,默认情况下三重约束是封闭的,这意味着这样的形状:
:Shape {
rdf:type [ :X ]
}意味着符合:Shape的节点必须有一个值为:X的rdf:type声明。
如果希望允许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} ;
}https://stackoverflow.com/questions/59172032
复制相似问题