0

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

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

4

1 回答 1

1

在 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} ;
}
于 2019-12-04T13:48:02.877 回答