做出这个推断需要什么?

问题描述 投票:0回答:1

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

 Obama bornIn Hawaii 
 Hawaii partOf USA

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

sparql rdf owl
1个回答
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规则集。
© www.soinside.com 2019 - 2024. All rights reserved.