如果我想推断出奥巴马出生在美国"从这些事实:
ansible -i ~/git/ansible/inventory tag_env:dev -m ping
这两个事实是否足以作出推论?如果是,是否应使用RDFS或OWL来表示事实?是否有一些在线SPARQL工具,我可以根据事实快速测试这些事实规范和推理?
答案 0 :(得分:2)
没人知道什么是bornIn
或partOf
。您应该找到一个合适的本体或自己模拟这些东西。有几种方法可以做到。
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。创建存储库时: