Mar*_*oli 5 rdf semantic-web owl ontology rdfs
我正在尝试构建一个Ontology来表示属性(资产),该属性应该有一个类型,如别墅或公寓......
我的问题是,我不知道别墅和公寓是否应该是班级或实例.我怎么知道?
我正在考虑有一个被调用的类Property和一个被调用的关系isTypeOf和一个被调用的类PropertyType,它有两个实例apartment和villa.那是对的吗?或者我应该Apartment和Villa类作为类的子PropertyType类?
我认为,您在这里结合了两个区别,您可能想分别争论:
\n\n(1) 与老问题大致相同inheritance or delegation。答案也或多或少相同:当歧视是所表示的对象的固有属性时,当歧视属性是您的知识模型的核心时,以及当歧视属性没有独立的存在理由时,请使用继承。
另一方面,当区分属性仅向您的类/对象添加附加信息或有足够的理由自行“存在”时(即不完全仅与引用对象绑定),请使用委托。就您的情况而言:检查有多少信息取决于 ,而该信息PropertyType取决于自身PropertyType而不是个人Property。如果有诸如“带游泳池和环形车道的别墅”之类的东西,并且这种区别很重要并且可以重复使用,那么您可能会考虑授权。
(2) 遵循同样的函数依赖思路。
\n\n我个人的经验法则是
\n\nLuxuryApartment或者Garden可以仅附加到 aVilla等)。不过,一般来说并不一定有正确或错误之分。
\n\n专业课程
\n\n如果Apartment和Villa是类,那么很容易根据这些类制定附加公理。例如,假设只有Propertys 才Villa允许拥有花园:
(\xe2\x88\x83 hasPropertyFeature . Garden) \xe2\x8a\x91 Villa\nRun Code Online (Sandbox Code Playgroud)\n\n如果您尝试使用hasPropertyType数据属性来表达这一点,您最终会得到类似的结果
(\xe2\x88\x83 hasPropertyFeature . Garden) \xe2\x8a\x91 (\xe2\x88\x83 hasPropertyType . "villa"^^xsd:string)\nRun Code Online (Sandbox Code Playgroud)\n\n这不仅更难掌握,而且推理起来也更慢。此外,类可以进行子类化,即有一种直接的方法可以进行额外的细分。
\n\n魂斗罗课程
\n\n但是,拥有hasPropertyType没有附加限制的属性允许您纯粹在实例级别添加附加属性值,而无需触及原始本体。
如果townHouse出现新的属性类型,基于类的版本需要更改原始本体的TBox并添加新的TownHouse类。虽然这通常没有问题(大多数时候是保守的扩展),但它仍然是TBox更改,您基本上需要为此类更改创建本体的新版本。
然而,当属性引入功能依赖性时,这个版本就变得不太可行;往上看。
\n