做出这个推论需要什么?
What's needed to make this inference?
如果我想从这些事实中推断"Obama bornIn USA":
Obama bornIn Hawaii
Hawaii partOf USA
这两个事实是否足以做出推断?如果是,应该用RDFS还是OWL来表示事实?有没有在线的SPARQL工具可以快速测试那些事实规范,并根据事实进行推理?
没有人知道什么是 bornIn
或 partOf
。你应该找到一个合适的 ontology 或自己建模这个东西。有几种方法可以做到。
OWL 2 种能力
OWL2个深度学习能力足以做出你想要的推理。
您只需要 property chain。
下面是序列化为 RDF Turtle 格式的示例 ontology。
@prefix : <http://www.semanticweb.org/ontologies/ontology#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://www.semanticweb.org/ontologies/ontology> rdf:type owl:Ontology .
:Obama rdf:type owl:NamedIndividual ; :bornIn :Honolulu .
:Honolulu rdf:type owl:NamedIndividual ; :partOf :Hawaii .
:Hawaii rdf:type owl:NamedIndividual ; :partOf :USA .
:USA rdf:type owl:NamedIndividual .
:bornIn rdf:type owl:ObjectProperty ; owl:propertyChainAxiom ( :bornIn :partOf ) .
:partOf rdf:type owl:ObjectProperty .
通用规则语言
您可以用以下 SWRL 规则替换 属性 链公理。
bornIn(?person, ?place1) ^ partOf(?place1, ?place2) -> bornIn(?person, ?place2)
SWRL 在本体层面运作。其他或多或少常见的规则语言(例如 SPIN)在 RDF 序列化级别上运行。
Triplestore 特定规则语言
在 GraphDB 中,您可以定义这样的 "ruleset":
Prefices { obama: http://www.semanticweb.org/ontologies/ontology# }
Axioms { }
Rules
{
Id: custom
a <obama:bornIn> b
b <obama:partOf> c
-----------------------
a <obama:bornIn> c
}
Is there some online SPARQL tool that I can quickly test those facts
specification and inference based on the facts?
要求推荐或查找工具或其他场外资源的问题与 SO 无关。但是,下面的 table 比较了一些流行的工具。
+---------+-----+------+-----+-------+
| | OWL | SWRL | … | rules |
+---------+-----+------+-----+-------+
| Protege | + | + | … | – |
| Stardog | + | + | … | + |
| GraphDB | ± | – | … | + |
| … | … | … | … | … |
+---------+-----+------+-----+-------+
我建议你试试 GraphDB Cloud。创建存储库时:
- 加载上面的规则集,如果你想使用GraphDB的规则语言,或
- select 内置 OWL-RL 规则集,如果你想使用 OWL 2 功能。
如果我想从这些事实中推断"Obama bornIn USA":
Obama bornIn Hawaii
Hawaii partOf USA
这两个事实是否足以做出推断?如果是,应该用RDFS还是OWL来表示事实?有没有在线的SPARQL工具可以快速测试那些事实规范,并根据事实进行推理?
没有人知道什么是 bornIn
或 partOf
。你应该找到一个合适的 ontology 或自己建模这个东西。有几种方法可以做到。
OWL 2 种能力
OWL2个深度学习能力足以做出你想要的推理。
您只需要 property chain。
下面是序列化为 RDF Turtle 格式的示例 ontology。
@prefix : <http://www.semanticweb.org/ontologies/ontology#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://www.semanticweb.org/ontologies/ontology> rdf:type owl:Ontology .
:Obama rdf:type owl:NamedIndividual ; :bornIn :Honolulu .
:Honolulu rdf:type owl:NamedIndividual ; :partOf :Hawaii .
:Hawaii rdf:type owl:NamedIndividual ; :partOf :USA .
:USA rdf:type owl:NamedIndividual .
:bornIn rdf:type owl:ObjectProperty ; owl:propertyChainAxiom ( :bornIn :partOf ) .
:partOf rdf:type owl:ObjectProperty .
通用规则语言
您可以用以下 SWRL 规则替换 属性 链公理。
bornIn(?person, ?place1) ^ partOf(?place1, ?place2) -> bornIn(?person, ?place2)
SWRL 在本体层面运作。其他或多或少常见的规则语言(例如 SPIN)在 RDF 序列化级别上运行。
Triplestore 特定规则语言
在 GraphDB 中,您可以定义这样的 "ruleset":
Prefices { obama: http://www.semanticweb.org/ontologies/ontology# }
Axioms { }
Rules
{
Id: custom
a <obama:bornIn> b
b <obama:partOf> c
-----------------------
a <obama:bornIn> c
}
Is there some online SPARQL tool that I can quickly test those facts specification and inference based on the facts?
要求推荐或查找工具或其他场外资源的问题与 SO 无关。但是,下面的 table 比较了一些流行的工具。
+---------+-----+------+-----+-------+
| | OWL | SWRL | … | rules |
+---------+-----+------+-----+-------+
| Protege | + | + | … | – |
| Stardog | + | + | … | + |
| GraphDB | ± | – | … | + |
| … | … | … | … | … |
+---------+-----+------+-----+-------+
我建议你试试 GraphDB Cloud。创建存储库时:
- 加载上面的规则集,如果你想使用GraphDB的规则语言,或
- select 内置 OWL-RL 规则集,如果你想使用 OWL 2 功能。