【发布时间】:2020-12-01 13:44:15
【问题描述】:
考虑两个具有不同推理规则集的 GraphDB 存储库:
- Repo A 带有规则集“RDFS(优化)”
- Repo B 带有规则集“RDFS-Plus(优化)”
我在这两个存储库中执行了以下 SPARQL INSERT:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ex: <http://www.example.com#>
INSERT DATA {
ex:hasPet a owl:ObjectProperty;
rdfs:domain ex:Human;
rdfs:range ex:Pet.
ex:someHuman ex:hasPet ex:somePet.
}
在这两个存储库中,我希望通过rdfs:domain 和rdfs:range,应该推断出以下类断言:
ex:someHuman rdf:type ex:Humanex:somePet rdf:type ex:Pet
rdfs:domain 和 rdfs:range 是 RDFS 属性,因此应该为 Repo A 推断它们。而且由于 RDFS-Plus 是 RDFS 的扩展,我认为它们也会在 Repo B 中推断出来。
但是,这些三元组只能通过规则集 RDFS (Repo A) 推断出来。如果我执行以下 SPARQL 查询,我只会在 Repo A 中得到结果,而在 Repo B 中没有结果。
PREFIX ex: <http://www.example.com#>
SELECT ?pet WHERE {
?pet a ex:Pet.
}
有人能告诉我为什么上面的两个三元组只能用 RDFS 规则集推断,而不能用 RDFS-Plus 规则集推断吗?
【问题讨论】:
-
哪个版本? 9.4?
-
RDFS-Plus规则集没有为rdfs:domain派生三元组的必要规则。您可以通过查看<gdb-dist>/configs/rules的 PIE 文件来了解每个规则集中使用了哪些规则 -
@StanislavKralin 是的,v9.4.1。
-
@DamyanOgnyanov 好的,但这是故意的吗?我希望 RDFS-Plus 包含 RDFS 的所有规则等等。
-
@DamyanOgnyanov 这显然是违反直觉的,因为众所周知,语义 Web 中的 RDFS Plus 具有 RDFS + 一些基于 OWL 的结构的一切。此外,甚至 GraphDB 文档也声明 “通过 OWL 词汇表支持对称、逆向和传递属性的 RDFS 的扩展版本:” - 那么为什么省略了
rdfs:domain规则?对我来说,这要么是一个“错误”,要么你应该重命名规则集。
标签: owl rdfs graphdb reasoning rdfs+