做出推断需要做些什么?

时间:2017-12-29 00:04:03

标签: sparql rdf owl

如果我想推断出奥巴马出生在美国"从这些事实:

ansible -i ~/git/ansible/inventory tag_env:dev -m ping

这两个事实是否足以作出推论?如果是,是否应使用RDFS或OWL来表示事实?是否有一些在线SPARQL工具,我可以根据事实快速测试这些事实规范和推理?

1 个答案:

答案 0 :(得分:2)

没人知道什么是bornInpartOf。您应该找到一个合适的本体或自己模拟这些东西。有几种方法可以做到。

OWL 2功能

OWL 2 DL功能足以进行您想要的推理。
您所需要的只是property chain

下面是一个序列化为RDF Turtle格式的示例本体。

@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序列化级别上操作。

特定于三重商店的规则语言

在GraphDB中,您可以定义此类“规则集”:

Prefices { obama: http://www.semanticweb.org/ontologies/ontology# }

Axioms { }

Rules
{
    Id: custom
      a <obama:bornIn> b
      b <obama:partOf> c
    -----------------------
      a <obama:bornIn> c
}
  

是否有一些在线SPARQL工具可以快速测试这些事实   基于事实的规范和推理?

要求推荐或找到工具或其他场外资源的问题不属于SO。但是,下表比较了一些流行的工具。

+---------+-----+------+-----+-------+
|         | OWL | SWRL |  …  | rules |
+---------+-----+------+-----+-------+
| Protege |  +  |  +   |  …  |   –   |
| Stardog |  +  |  +   |  …  |   +   |
| GraphDB |  ±  |  –   |  …  |   +   |
|    …    |  …  |  …   |  …  |   …   |
+---------+-----+------+-----+-------+

我建议你试试GraphDB Cloud。创建存储库时:

  • 如果要使用GraphDB的规则语言
  • ,请加载上面的规则集
  • 如果要使用OWL 2功能,请选择内置的OWL-RL规则集。
相关问题