快板推理
Allegrograph reasoning
我正在通过 Allegrograph 示例熟悉 RDF 存储。我感兴趣的部分之一是推理。我从这里举了一个例子:https://franz.com/agraph/support/documentation/6.4.3/agraph-introduction.html 并试图让它工作。
从图中看来,逻辑链如下:
- "Has Pet" 谓词适用于"Mammal" 对象。例如。如果有一个三元组谓词,则会推断出另一个三元组 rdf:type 。它由三重 rdfs:range
定义
- "Has Pet" 谓词是 "Owns" 的子属性。例如。如果有一个三元组,就会推断出另一个三元组。它由三重 rdfs:subPropertyOf
定义
- "Owns" 谓词适用于"Human" 对象。例如。如果有一个三元组,就会推断出另一个三元组 rdf:type 。它由三重 rdfs:domain
定义
所以我创建了一个显示在 Franz 网页上的图表。
s,p,o
"test://Animal","rdf:type","rdf:class"
"test://Mammal","rdfs:subClassOf","test://Animal"
"test://Dog","rdfs:subClassOf","test://Mammal"
"test://hasPet","rdfs:range","test://Mammal"
"test://hasPet","rdfs:subPropertyOf","test://owns"
"test://owns","rdfs:domain","test://Human"
"test://owns","rdf:type","rdf:Property"
"test://petOf","owl:inverseOf","test://hasPet"
"test://Robbie","test://petOf","test://Jans"
"test://MrAasman","owl:sameAs","test://Jans"
我预计从这些数据中至少可以推断出两个事实:
- 罗比是哺乳动物
- 詹斯是人类
但事实并非如此。我不能说推理完全没有用。至少我看到了:
- Jans 有宠物 Robbie
- 詹斯拥有罗比
- MrAasman 有宠物 Robbie
- MrAasman 拥有 Robbie
- 狗是一种动物
为什么它不推断类型?这是预期的行为吗?
这不是预期的行为。 AllegroGraph 的动态 RDFS++ 推理器似乎缺少一些可以通过跟踪子属性链和逆链进行的推论。
我已经为您向 Franz 提交了一个错误 (bug25588),并且正在研究将出现在 v6.5.0 中的修复。
同时,您可以使用 Materializer 来查找所有推断的三元组。您可以在 AGWebView 中或通过其中一个客户端 API 执行此操作。如果您还有其他问题,最好的办法是发送电子邮件至 allegrograph-support@franz.com,以便我们创建支持票。
我们无法将这些修复程序纳入 AllegroGraph v6.4.5。如果您向我们提出支持请求,我们可以确保在发布 v6.5.0 时通知您。
我正在通过 Allegrograph 示例熟悉 RDF 存储。我感兴趣的部分之一是推理。我从这里举了一个例子:https://franz.com/agraph/support/documentation/6.4.3/agraph-introduction.html 并试图让它工作。 从图中看来,逻辑链如下:
- "Has Pet" 谓词适用于"Mammal" 对象。例如。如果有一个三元组谓词,则会推断出另一个三元组 rdf:type 。它由三重 rdfs:range 定义
- "Has Pet" 谓词是 "Owns" 的子属性。例如。如果有一个三元组,就会推断出另一个三元组。它由三重 rdfs:subPropertyOf 定义
- "Owns" 谓词适用于"Human" 对象。例如。如果有一个三元组,就会推断出另一个三元组 rdf:type 。它由三重 rdfs:domain 定义
所以我创建了一个显示在 Franz 网页上的图表。
s,p,o
"test://Animal","rdf:type","rdf:class"
"test://Mammal","rdfs:subClassOf","test://Animal"
"test://Dog","rdfs:subClassOf","test://Mammal"
"test://hasPet","rdfs:range","test://Mammal"
"test://hasPet","rdfs:subPropertyOf","test://owns"
"test://owns","rdfs:domain","test://Human"
"test://owns","rdf:type","rdf:Property"
"test://petOf","owl:inverseOf","test://hasPet"
"test://Robbie","test://petOf","test://Jans"
"test://MrAasman","owl:sameAs","test://Jans"
我预计从这些数据中至少可以推断出两个事实:
- 罗比是哺乳动物
- 詹斯是人类
但事实并非如此。我不能说推理完全没有用。至少我看到了:
- Jans 有宠物 Robbie
- 詹斯拥有罗比
- MrAasman 有宠物 Robbie
- MrAasman 拥有 Robbie
- 狗是一种动物
为什么它不推断类型?这是预期的行为吗?
这不是预期的行为。 AllegroGraph 的动态 RDFS++ 推理器似乎缺少一些可以通过跟踪子属性链和逆链进行的推论。
我已经为您向 Franz 提交了一个错误 (bug25588),并且正在研究将出现在 v6.5.0 中的修复。
同时,您可以使用 Materializer 来查找所有推断的三元组。您可以在 AGWebView 中或通过其中一个客户端 API 执行此操作。如果您还有其他问题,最好的办法是发送电子邮件至 allegrograph-support@franz.com,以便我们创建支持票。
我们无法将这些修复程序纳入 AllegroGraph v6.4.5。如果您向我们提出支持请求,我们可以确保在发布 v6.5.0 时通知您。