cod*_*der 1 owl ontology protege
我有一个类Movie,其中有像 2515159 这样的代表电影的实例,还有一个名为 的类Country,其中有像英国、美国、意大利、奥地利和其他国家这样的实例。我还有一个hasCountry与电影中的国家相匹配的角色,例如:
2515159 hasCountry Italy
2515159 hasCountry Austria
Run Code Online (Sandbox Code Playgroud)
(一部电影可以有多个国家)
现在的问题是:
我想创建一个MovienameEuropeanMovie,其中包含仅拥有欧洲国家的个人的实例。
在 protege 创建名为 EuropeanMovie 的 Movie 子类后,我尝试将“等效项”放置为:
Movie and hasCountry only {Austria,Italy, ...all the EU countries...}
Run Code Online (Sandbox Code Playgroud)
还尝试过:
Movie
and hasCountry some (
{Austria,Italy, ...all the EU countries...}
and not {USA, and other non EU countries...} )
Run Code Online (Sandbox Code Playgroud)
但是,上面仅使用关键字不会返回任何内容,而有仅包含欧盟国家的电影(如开头的示例)。
经过大量搜索后,我没有找到太多,但我认为这可能与猫头鹰的开放世界假设有关,但我不明白这一点。
如果有人能给任何建议,那将非常有帮助,谢谢!
事实上,这是开放世界假设(OWA)的结果。OWA意味着可能存在本体中未描述的其他知识(但并不矛盾)。特别是,如果本体包含
2515159 hasCountry Italy
2515159 hasCountry Austria
Run Code Online (Sandbox Code Playgroud)
这并不意味着电影中没有其他国家。这可能很容易是
2515159 hasCountry USA
Run Code Online (Sandbox Code Playgroud)
本体中没有提及。这就是为什么请求only无法为您找到任何电影的原因。
为了获得only问题的正确答案,你必须修改你的本体,以确保除了本体中明确提到的国家之外,电影中没有任何国家。
例如,可以添加only语句来表明本体中的知识是完整的。通过增加
{2515159} subClassOf hasCountry only {Italy, Austria}
可以确保电影2515159中没有其他国家。