我有一個簡單的問題,我懷疑沒有簡單的答案。從本質上講,我想檢查一個OWL表達式(#B)在邏輯上是否跟隨另一個(#A) - 是否是真的 - 換句話說,我想問:真的,#A - > #B?檢查OWL表達式之間的邏輯蘊涵關係?
這樣做的原因是,我正在寫一個匹配算法相匹配在基於知識(由#KnowledgeStructure類表示)的結構的應用程序來描述當前應用狀態的需要的結構(#StateRequirement )。這兩個結構都具有屬性,它們具有代表第三種結構(#Model)狀態下的OWL表達式的字符串值。它們是:#KnowledgeStructure.PostCondition,它表示如何將應用於#Model的知識結構轉換#Model;和#StateRequirement.GoalCondition,它表達了應用程序想實現的#Model狀態。因此,我希望看到#KnowledgeStructure是否會通過檢查#KnowledgeStructure.PostCondition生成所需的#StateRequiremment.GoalCondition來滿足#StateRequirement。我可以抽象表達爲:(#KnowledgeStructure.Postcondition =>#StateRequirement.GoalCondition)=>匹配(#KnowledgeStructure,#StateRequirement)。不太容易混淆,我可以表示爲:((#A - > #B) - >匹配(#A,#B)),其中#A和#B都是有效的OWL表達式。
在一般情況下,我希望能夠表達以下規則:「如果#A表達式#A跟隨來自#A,那麼表達式匹配(#A,#B)也是真的」 。
本質上,我的問題是這樣的:我如何在OWL中構建或實現這樣的規則?我如何測試一個表達式是否來自另一個表達式?另外,如果這個關係沒有明確說明,現有的reasoners是否足夠強大以確定兩個表達式之間的關係#A - > #B?
你能澄清一點你所說的「表達」的意思,理想使用OWL規範的術語(http://www.w3.org/TR/owl2-syntax/)。 – Kaarel
當然,我正在談論的是先前使用SWRL規則的條件表達式: description'('i-object')' \t | dataRange'('d-object')' \t | individualvaluedPropertyID'('i-object i-object')' \t | datavaluedPropertyID'('i-object d-object')' \t | sameAs'('i-object i-object')' \t | differentFrom'('i-object i-object')' \t | builtIn'('builtinID {d-object}')' –