我正在建模一个本体,该本体应用于表示有关餐厅,所提供的菜肴,价格和美食类型的知识。
该系统的功能之一是允许用户浏览可以吃某些特定种类菜肴的地方,或者搜索专门从事某些美食的餐馆。
考虑到这一点,我已经为本体的第一个版本建模,但是我提出了疑问。
代表餐厅的特色:(a)我应该将其作为对象属性,具有类烹饪,还是(b),就像数据属性一样,即是 Restaurant 类的简单属性吗?
选择 a 或 b 有哪些含义?
答案 0 :(得分:3)
语义网的座右铭是“事物,而不是字符串”。这就是RDF / RDFS / OWL与其他建模框架不同的原因。
在OWL 2中,对象属性可能具有不同的characteristics,而数据属性可能没有:
此外,数据属性不能是property chains的一部分。所有这些restrictions都是出于可判定性的原因。
有很多美食,它们可以具有自己的属性(至少有详细的描述)和关联,所以我建议使用对象属性。
答案 1 :(得分:3)
原则上,本体的目的是描述有关特定主题的知识。本体应该部分回答“什么是[NameOfTheConceptYouWantToDefine]?”这个问题。在OWL中,通过提供类别(OWL类)和类别的对象之间(OWL个人)或对象与数据值(文字)之间的二进制关系来回答问题。例如,问自己一个问题“什么是成分?”。如果您的答案是“成分是Unicode字符的有限序列”,那么您将需要一个数据类型属性来将某些内容与成分关联。如果您认为某个成分是日期或数字,则相同。
但是,如果您认为一种成分是无法在数据结构中进行数字编码的实体,那么您可能需要一个特定的类,并需要将其与事物相关联的对象属性。
但是,本体也可以用作您所描述事物的数据结构指南。有时,使用字符串作为事物的描述比谈论事物本身更方便。例如,可以使用字符串来描述食谱的成分。此字符串不应与成分本身混淆。为了使这种区别更加明确,可以使用名称明确的数据类型属性,例如ex:ingredientDescription
。
现在,问问自己“什么是美食?”。是字符串,数字,日期吗?您需要进一步描述美食还是只需要基于字符串的美食描述?