我有一个班级Movie
,其中包含代表电影的2515159个实例和一个名为Country
的班级,其中包含个人,如英国,美国,意大利,奥地利和其他国家。我还有一个角色hasCountry
与电影中的国家/地区相匹配,例如:
2515159 hasCountry Italy
2515159 hasCountry Austria
(电影可以有很多国家)
现在出现问题:
我想创建一个名为Movie
的{{1}}的子类,其中包含只有欧洲国家的个体。
在保护中创建名为EuropeanMovie的Movie的子类后,我尝试将等效于:
EuropeanMovie
也尝试过:
Movie and hasCountry only {Austria,Italy, ...all the EU countries...}
但上面只使用关键字不会返回任何内容,而只有欧盟国家的电影就像开头的例子一样。
经过大量的搜索,我发现了很多,但我认为这可能与猫头鹰的开放世界假设有关,但我不明白。
如果有人能提出任何建议,那将非常有帮助,谢谢!
答案 0 :(得分:4)
确实这是开放世界假设(OWA)的结果。 OWA意味着可能存在本体中未描述的其他知识(但与其不矛盾)。特别是,如果本体包含
<manifestcertificatethumbprint>...</manifestcertificatethumbprint>
<manifestkeyfile>...</manifestkeyfile>
<generatemanifests>...</generatemanifests>
<signmanifests>...</signmanifests>
这并不意味着电影中没有其他国家。它可能很容易
<button type="submit" id="button" email-confirm></button>
$('#button').click(function (e) {
var type = $(this).attr('type:submit');
if (!$('#dialog').length) {
$('body').append('<div id="dialog" class="modal modal-block" role="dialog"><p>Do you want to delete?</p><button id="dialogConfirm">Confirm</button><button id="dialogCancel" data-dismiss="modal">Cancel</button></div>');
}
$('#dialogConfirm').attr('type:submit', type);
$('#dialog').modal({ show: true });
return false;
})
在本体中没有提到。这就是为什么2515159 hasCountry Italy
2515159 hasCountry Austria
的请求无法为您找到任何电影的原因。
为了获得2515159 hasCountry USA
查询的正确答案,您必须修改本体,以确保除了本体中明确提到的内容之外,影片中没有国家/地区。
例如,可以添加only
语句来声明本体中的知识已完成。添加
only
可以确保电影2515159中没有其他国家。
答案 1 :(得分:1)
使用Protégé5.1.0和Pallet,我测试过:
Movie and hasCountry some ({Austria, Italy})
且没有括号:
Movie and hasCountry some {Austria, Italy}
以及我建议的方法 - 将EuropeanCountry
作为单独的类:
:EuropeanMovie rdf:type owl:Class ;
owl:equivalentClass [ owl:intersectionOf ( :Movie
[ rdf:type owl:Restriction ;
owl:onProperty :hasCountry ;
owl:someValuesFrom [ rdf:type owl:Class ;
owl:oneOf ( :Austria :Italy ) ] ] ) ;
rdf:type owl:Class] ;
rdfs:subClassOf :Movie .
然后将EuropeanMovie
定义为:
Movie and hasCountry some EuropeanCountry