做出这个推论需要什么?

What's needed to make this inference?

如果我想从这些事实中推断"Obama bornIn USA":

 Obama bornIn Hawaii 
 Hawaii partOf USA

这两个事实是否足以做出推断?如果是,应该用RDFS还是OWL来表示事实?有没有在线的SPARQL工具可以快速测试那些事实规范,并根据事实进行推理?

没有人知道什么是 bornInpartOf。你应该找到一个合适的 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 功能。