我开始学习如何对owl本体进行推理,并且在确定我尝试做的事情是否可能时遇到了一些问题。
我使用的本体论是位于这里的葡萄酒本体论;它引用了这个食物本体。我在Protege和Jena都玩过推理引擎。
<owl:NamedIndividual rdf:about="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#test">
<rdf:type rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#LightMeatFowlCourse"/>
<food:hasFood rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#Chicken" />
</owl:NamedIndividual>
http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#LightMeatFowlCourse
http://www.w3.org/2002/07/owl#NamedIndividual
http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#MealCourse
http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#ConsumableThing
http://www.w3.org/2000/01/rdf-schema#Resource
所以现在我尝试使用hasdrink
属性来确定什么类型的葡萄酒可以搭配这道菜。在本体论中为可以与此属性关联的实例定义了几个限制:HasBody
、HasColor
等--定义如下:
<owl:Class rdf:about="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#LightMeatFowlCourse">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#MealCourse"/>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#hasFood"/>
<owl:allValuesFrom rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#LightMeatFowl"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
<rdfs:subClassOf rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#MealCourse"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#hasDrink"/>
<owl:allValuesFrom>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#hasBody"/>
<owl:hasValue rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#Medium"/>
</owl:Restriction>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#hasDrink"/>
<owl:allValuesFrom>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#hasColor"/>
<owl:hasValue rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#White"/>
</owl:Restriction>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#hasDrink"/>
<owl:allValuesFrom>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#hasFlavor"/>
<owl:hasValue rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#Moderate"/>
</owl:Restriction>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#hasDrink"/>
<owl:allValuesFrom>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#hasSugar"/>
<owl:hasValue rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#Dry"/>
</owl:Restriction>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
我可以A)获得这些限制,这样我就可以确定什么类型的葡萄酒将与我的MealCourse实例匹配,以及B)执行该查询以获得匹配的实例列表吗?
我已经通读了关于查询OWL关系的w3c文档,我非常肯定这是可以做到的,但是我在使用SPARQL时遇到了一个真正的问题--我觉得我错过了一些非常明显的东西,但是我不确定我到底应该查看什么。
来自AKSW的评论给出了答案:
SELECT ?p ?val WHERE {
<http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#LightMeatFowlCourse> rdfs:subClassOf ?restriction .
?restriction owl:onProperty <http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#hasDrink>.
?restriction owl:allValuesFrom [owl:onProperty ?p; owl:hasValue ?val].
}
我已经使用OWL API4.1.3加载了我的本体,它并不大。由于需要使用推断信息,我还使用Hermit1.3.8.413库进行了推理。下面的代码显示了我是如何完成的。 它不会抛出任何错误,但它需要将推断出的本体存储在一个新文件中。事实上,即使在2天后,它也没有完成工作。我的IDE是eclipse EE,我为运行这个应用程序提供了6到12 GB的内存。我找不到任何问题与我的代码或我的本体。
我甚至尝试与其他推理者(隐士,佩莱),因为我读到其他的帖子,但结果没有改变。我该怎么解决呢?
Hospitals和hasNameWithWords值“Center”^^字符串 这个查询返回给我的实例是,在Protege4.2中,使用FACT++reasoner和Hermit reasoner的医院名称中有“Center” 但当我在OWL-API的DL查询示例中输入相同的查询时,该示例可在以下网站获得:http://sourceforge.net/p/owlapi/code/ci/aef69
我刚刚开始使用OWL API,以便生成一些使用其他本体的示例。情况是这样的:我有两个本体A和B,它们有很多元素,从其他本体导入。这两个本体是一个标准的一部分,因此它们是密切相关的。我需要生成一个标准的元素示例,它涉及导入这两个本体,并使用和组合来自这两个本体的类和元素,但我不知道如何开始。我尝试过使用API,但我唯一实现的是加载一个本体,获取一些类和属性,并将它们组合成一个新的本体。我也不知道如何
假设我们有一个名为的类,和一个名为的DataProperty。这些说法有什么区别:
GreatNewUpperOntology正确导入,但显示的名称如下: Untitle-Ontology-93(http://www.semanticweb.org/myname/ontologies/2014/9/Untitle-Ontology-93) 问题:有没有一种方法让我把我的本体保存到SemanticWeb.org站点,使用我在自己的计算机上给文件起的描述性名称,例如“GreatNew