Jena 是否支持在 SPARQL 更新查询期间强制执行 OWL 约束?
Does Jena support enforcing OWL constraints during a SPARQL Update query?
我想弄清楚 Jena(或任何其他 SPARQL 更新服务器)是否会强制执行本体约束。例如,我想强制只允许具有类型 x 的实体具有 属性 y,并且 属性 的值必须具有类型 z。我认为这是 OWL 可以提供的,但我不确定。另外,具体来说,Jena 是否会确保如果我尝试编写不遵循这些规则的 SPARQL 更新查询,该更新将无法插入并返回错误?
关于OWL你需要了解的是property restriction:
A property restriction is a special kind of class description. It describes an anonymous class, namely a class of all individuals that satisfy the restriction. OWL distinguishes two kinds of property restrictions: value constraints and cardinality constraints.
A value constraint puts constraints on the range of the property when applied to this particular class description.
A cardinality constraint puts constraints on the number of values a property can take, in the context of this particular class description.
根据您的问题描述,您需要使用值约束。存在这些值约束:一些 (someValuesFrom
)、仅 (allValuesFrom
) 和恰好 (hasValue
).
例如:
Class: Woman subClassOf: hasGender only Female
Class: Mother subClassOf: hasChild some Child
Class: Employee subClassOf: hasEmployeeID exaclty 1 ID
因此,根据您定义的对个体的限制,这些个体可以class在正确的 class 下被推理者 class 化,这将是他们的类型。系统通常不会阻止您输入虚假信息,但该概念将被声明为无法满足或不一致。在输入与 ontology 中的常量不兼容的个体的情况下,ontology 变得不一致(一切都出错了)然后你可以收回我假设的最后一个事实。 Jena我不太确定,但是OWL-API让你临时给ontology管理器加一个概念,然后你可以检查ontology的一致性。通常当这个检查出错时,您可以删除对 ontology 管理器的最后一个未保存的更改(通过更改侦听器),如果一切正确,您可以将更改保存在 ontology 管理器中。
For example, I want to enforce that only entities which have type x are allowed to have property y and the value of the property must have type z. I think this is what OWL can provide, but I'm not sure.
您要的是 而不是 OWL 提供的内容。在OWL中,你可以这样说:
属性 Y rdfs:domain 类型 X
属性 Y rdfs:domain 类型 Z
但这并不意味着(至少,以您期望的方式),只有 X 类型的东西可以有 propertyY 的值,并且这些值必须是Z类型。意思是每当你看到一个使用propertyY的断言,比如
a 属性 Y b
OWL 推理者可以推断
a rdf:type typeX
b rdf:type 类型 Z
这些推论唯一会是任何类型的 "constraint violation" 的情况是,如果您有其他方法可以推断出 a cannot 是 X 类型,或者 b cannot 是 Z 类型。然后 OWL 推理器会识别出不一致。
I'm trying to figure out if Jena (or any other SPARQL Update server) will enforce ontological constraints. … Also, specifically, will Jena ensure that if I try to write a SPARQL Update query which does not follow these rules, that update will fail to insert and an error will be returned?
我不知道 Jena 是否支持开箱即用的类似功能,但您可能可以:
- 使用附有推理器的 OntModel,然后 运行 您的 SPARQL 会针对该图进行更新。然后,你可以查询这个图,看看有没有不一致的地方。这将如何完成将取决于推理器如何发出不一致信号。这可能并不那么难,但请记住,Jena 确实是基于 RDF 的,对于完整的 OWL 推理,您需要另一个与 Jena 集成的推理器(例如 Pellet,但我认为还有其他推理器) ).
- 或者,您可以使用内置推理功能的商店,并且可能已经具备这种功能。我认为 Stardog 具有其中一些功能。
我想弄清楚 Jena(或任何其他 SPARQL 更新服务器)是否会强制执行本体约束。例如,我想强制只允许具有类型 x 的实体具有 属性 y,并且 属性 的值必须具有类型 z。我认为这是 OWL 可以提供的,但我不确定。另外,具体来说,Jena 是否会确保如果我尝试编写不遵循这些规则的 SPARQL 更新查询,该更新将无法插入并返回错误?
关于OWL你需要了解的是property restriction:
A property restriction is a special kind of class description. It describes an anonymous class, namely a class of all individuals that satisfy the restriction. OWL distinguishes two kinds of property restrictions: value constraints and cardinality constraints.
A value constraint puts constraints on the range of the property when applied to this particular class description.
A cardinality constraint puts constraints on the number of values a property can take, in the context of this particular class description.
根据您的问题描述,您需要使用值约束。存在这些值约束:一些 (someValuesFrom
)、仅 (allValuesFrom
) 和恰好 (hasValue
).
例如:
Class: Woman subClassOf: hasGender only Female
Class: Mother subClassOf: hasChild some Child
Class: Employee subClassOf: hasEmployeeID exaclty 1 ID
因此,根据您定义的对个体的限制,这些个体可以class在正确的 class 下被推理者 class 化,这将是他们的类型。系统通常不会阻止您输入虚假信息,但该概念将被声明为无法满足或不一致。在输入与 ontology 中的常量不兼容的个体的情况下,ontology 变得不一致(一切都出错了)然后你可以收回我假设的最后一个事实。 Jena我不太确定,但是OWL-API让你临时给ontology管理器加一个概念,然后你可以检查ontology的一致性。通常当这个检查出错时,您可以删除对 ontology 管理器的最后一个未保存的更改(通过更改侦听器),如果一切正确,您可以将更改保存在 ontology 管理器中。
For example, I want to enforce that only entities which have type x are allowed to have property y and the value of the property must have type z. I think this is what OWL can provide, but I'm not sure.
您要的是 而不是 OWL 提供的内容。在OWL中,你可以这样说:
属性 Y rdfs:domain 类型 X
属性 Y rdfs:domain 类型 Z
但这并不意味着(至少,以您期望的方式),只有 X 类型的东西可以有 propertyY 的值,并且这些值必须是Z类型。意思是每当你看到一个使用propertyY的断言,比如
a 属性 Y b
OWL 推理者可以推断
a rdf:type typeX
b rdf:type 类型 Z
这些推论唯一会是任何类型的 "constraint violation" 的情况是,如果您有其他方法可以推断出 a cannot 是 X 类型,或者 b cannot 是 Z 类型。然后 OWL 推理器会识别出不一致。
I'm trying to figure out if Jena (or any other SPARQL Update server) will enforce ontological constraints. … Also, specifically, will Jena ensure that if I try to write a SPARQL Update query which does not follow these rules, that update will fail to insert and an error will be returned?
我不知道 Jena 是否支持开箱即用的类似功能,但您可能可以:
- 使用附有推理器的 OntModel,然后 运行 您的 SPARQL 会针对该图进行更新。然后,你可以查询这个图,看看有没有不一致的地方。这将如何完成将取决于推理器如何发出不一致信号。这可能并不那么难,但请记住,Jena 确实是基于 RDF 的,对于完整的 OWL 推理,您需要另一个与 Jena 集成的推理器(例如 Pellet,但我认为还有其他推理器) ).
- 或者,您可以使用内置推理功能的商店,并且可能已经具备这种功能。我认为 Stardog 具有其中一些功能。