在执行 Shex 验证时,如何在 RDF 中允许不可预见的属性?



我们正在创建 Shex 定义文件,检查某些 IRI 是否属于给定类型。我们生成的代码没有问题,但有时我们会使用 Protege 生成的文件,并且大多数人的类型为Xowl:NamedIndividual,使我们的验证失败,因为现在给定的资源有 2 个类型rdf:type的断言。

向所有形状检查添加owl:NamedIndividual似乎会污染 Shape 定义,那么如何允许与形状定义不冲突的额外属性呢?

在 Shex 中,默认情况下,三重约束是闭合的,这意味着形状如下:

:Shape {
rdf:type [ :X ]
}

表示符合:Shape的节点必须只有一个值为:Xrdf:type声明。

如果要为rdf:type声明允许额外的值,可以使用关键字EXTRA将其表示为:

:Shape EXTRA rdf:type {
rdf:type [ :X ]
}

现在的意思是,符合标准的节点必须具有rdf:type :X,并且可以具有零或rdf:type的模式值。

请注意,前面的示例可以定义为:

:Shape EXTRA a {
a [ :X ]
}

在特殊情况下,您只想允许具有值owl:NamedIndividual的额外rdf:type,您还可以将其定义为:

:Shape {
a [:X ] ;
a [ owl:NamedIndividual] ;
}

或作为:

:Shape {
a [:X owl:NamedIndividual]{2} ;
}

相关内容

  • 没有找到相关文章

最新更新