SWRL统治pizza.owl来自同一个国家的至少两种成分

时间:2018-03-05 19:28:07

标签: ontology swrl

我扩展了原始的pizza.owl,现在我的Protege中有以下SWRL规则(规则编辑器:Windows / Views / Ontology views / Rules):

NationalPizza

规则应该为所有比萨饼个体声明MeatTopping,其中至少有两种成分(例如PizzaToppings)来自同一个国家(例如CreamTopping Lardon_Alsace和hasCountryOfOriginCrèmeFraîche_Normandie都有{{1}等于个人法国)。 推理者(Pellet)什么都没发现。 我可以使用任何swrlb函数吗?

+++的 EDIT1 +++

我提出了以下解决方案:

Pizza(?p), 
hasIngredient(?p, ?ing1), hasIngredient(?p, ?ing2), 
hasCountryOfOrigin(?ing1, ?c1), hasCountryOfOrigin(?ing2, ?c1) -> NationalPizza(?p)

给出了正确的结果。

或者,我也尝试使用OWL表达式:

Pizza(?p), (hasIngredient min 2 PizzaTopping)(?ing)  -> NationalPizza(?p)

但是我如何纳入国家必须相同的条件?有什么想法吗?

+++的 EDIT2 +++

我在SWRLTab中对SWRL规则进行了以下更改(基于@AKSW评论):

Pizza(?p) ^ 
hasIngredient(?p, ?i1) ^ hasIngredient(?p, ?i2) ^ 
  hasName(?i1, ?ni1) ^ hasName(?i2, ?ni2) ^ swrlb:notEqual(?ni1, ?ni2) ^ 
hasCountryOfOrigin(?i1, ?c1) ^ hasCountryOfOrigin(?i2, ?c2) ^ 
  hasName(?c1, ?nc1) ^ hasName(?c2, ?nc2) ^ swrlb:equal(?nc1, ?nc2) 
-> NationalPizza(?p)

但是Pellet(增量)推理器没有声明个体BlancheAuxLardonds_MaMère,它确实具有(至少)来自同一国家的两种不同成分(Lardon_AlsaceReblochon_LEcho-des-Alpages)({ {1}})。

+++的 EDIT3 +++

我对本体进行了以下更改(基于@AKSW评论):

France

对此有何帮助?

我的本​​体是here

0 个答案:

没有答案