我知道这听起来像一个非常愚蠢的问题,但我一直试图解决这个问题,但我找不到任何相关内容,尽管这显然应该是可行的.
我正在开发一些使用曼彻斯特OWL语法和HermiT推理器通过其API查询OWL文件的东西.我也可以在Protege 4的DL Query选项卡上运行查询,以检查我在该文件上的查询结果.该文件基本上是添加数据实例的朋友之友(FOAF)本体.
问题:我找不到通过其唯一标识符查询实例的方法.
它应该是URI,所以例如对于具有URI的Person对象 http://xmlns.com/foaf/0.1/Andrew_Kuchling,我试图运行以下查询:
Person and URI value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"
Person value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"
Person and URI value "Andrew_Kuchling"
Person that "Andrew_Kuchling"
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.(URI是通过http://xmlns.com/foaf/0.1/为您输入的任何字符串添加前缀来构造的,并且URI实际上并未在本体中标识为属性).
在FOAF中,mbox_sha1sum是邮箱的sha1sum.邮箱与个人有着独特的联系.所以我尝试了以下查询:
Person and mbox_sha1sum value "mbox_sha1sum-property-value-here"
Run Code Online (Sandbox Code Playgroud)
但是,它甚至不执行此查询,因为它感觉查询不正确.该mbox_sha1sum值与我为此Person添加的值相同.它存在于个人中.
它确实执行此查询:
Person and firstName value "Andrew"
Run Code Online (Sandbox Code Playgroud)
所有数据属性都不是专用数据类型.默认情况下作为文字处理.
我真的不知道我做错了什么.请有人请帮忙吗?
我正在使用Protege v4.3来制作本体.我有一个关于OWL本体和DL查询的问题.
例如,在Pizza ontology中, http://owl.cs.manchester.ac.uk/co-ode-files/ontologies/pizza.owl
我可以执行DL查询
hasTopping some CheeseTopping
结果是American,AmericanHot,Cajun,..等等没关系.
现在,我尝试了DL查询
isToppingOf some American
但结果却一无所获.
由于物业isToppingOf是hasTopping的逆属性,我希望得到的结果,包括FourCheesesTopping,CheeseyVegetableTopping等从该查询(通过推理).芽它没有.
这样的自动推理有什么办法吗?
此DL-Query不会返回任何个人:
hasPet exactly 1 DomesticAnimal这是本体的一部分:
:hasPet a owl:ObjectProperty;
rdfs:domain :Human;
rdfs:range :DomesticAnimal;
owl:inverseOf : petOf;
:Joe a :Human;
hasPet :Lassy.
:Bob a :Human;
hasPet :Sparkey, Lucky.
Run Code Online (Sandbox Code Playgroud)
查询:
petOf value Bob 回归Sparkey和LuckypetOf value Joe 回报 LassyhasPet exactly 1 没有回报.为什么不是最后一个查询返回Joe?我在使用Pellet,HermiT和FaCT ++的Protégé中尝试过它,但它没有用.
在OWL中,此查询工作正常
"person and hasChild min 3"
Run Code Online (Sandbox Code Playgroud)
它工作正常,它给了我所有超过3个孩子的人
但是这个不起作用
"person and hasChild max 3"
Run Code Online (Sandbox Code Playgroud)
它应该给我所有少于3个孩子的人,但它不起作用
有没有人对此有所了解?
为什么"min"工作,而"max"没有给出任何结果!??
谢谢