GraphDB是否提供类似于Stardog完整性约束验证(ICV)的任何机制

时间:2018-06-25 16:05:18

标签: rdf triplestore graphdb stardog

我正在寻找一个大型的三重存储数据库管理系统,该系统提供一种机制来确保提交的事务不会以与本体的TBox不一致的方式更改本体的ABox。

到目前为止,我唯一确定提供这种机制的是Stardog(https://www.stardog.com/docs/#_validating_constraints)。

GraphDB是否提供任何与此类似的机制?

1 个答案:

答案 0 :(得分:1)

GraphDB的规则语言支持推理和一致性检查规则。您可以使用GraphDB's PIE syntax重写相同的已发布的完整性验证约束(ICV),例如:

经理必须是员工

此规则的更通用的版本是替换“ RDFS范围”推理规则:

Id: prp_rng

  a <rdfs:range> b
  c a d
------------------------------------
  d <rdf:type> b

具有等同的一致性检查:

Consistency: prp_rng_constraint

  a <rdf:type> b
  a <rdfs:range> c [Constraint b != c]
------------------------------------

如果引发空结果的规则,则会生成验证错误。

只有员工可以拥有SSN

我将以更通用的方式表达规则,例如每种类型必须至少具有一个属性:

Consistency: min_cardinality

   a <owl:minCardinalityConstraint> "1"^^xsd:nonNegativeInteger
   a <owl:onType> b
   c <rdf:type> b
   ------------------------------------
   c a y

然后说明本体:

INSERT DATA {
     :ssn owl:minCardinalityConstraint "1"^^xsd:nonNegativeInteger;
          owl:onType :Employee.
};

具有结果的规则表明,如果触发规则,则该语句必须存在于存储库中。

您可以在内置规则集中查看更多示例。