我第一次在Protege 5.1中创建了一个Ontology,解决了一个真正的问题。
我对制造某些类型的物业的基本需求感到磕磕绊绊"要求"对于一个类的实例。我希望推理能够强调缺少必需属性等问题。
所以,让我们说某类产品,例如"物理产品"需要一个"重量"。我怎样才能在本体中表达这个要求?那么没有重量的物理产品会被标记出来吗?
答案 0 :(得分:2)
简短的回答是你不能用OWL做。
OWL本体描述了关于世界的真相,没有别的。本体不会使屏幕闪烁,它们不会对要给警察的内容施加规定来验证你是一个人,并且它们不会使本体系统中断,因为已知存在的内容没有具体的价值。本体论是知识,而不是法规。如果我知道物理产品必须具有重量这一事实,我的理智推理者就没有理由因为我携带的苹果没有提供其重量的明确值而感到恐惧。
但是,如果您有可证实的物理产品没有重量的证据,例如试图向您出售抽象概念的人,就好像它是您可以触摸和处理的物理产品,那么您可以说存在不一致。也就是说,有些事实相互矛盾。 Reasoners可以检测不一致性并解释不一致的原因。但是,他们无法将缺乏重量作为不一致的原因。
尽管如此,这可能并不令你满意,因为你有一个具体的问题而且你想要一个具体的解决方案。解决这个问题的一种方法就是实现这些要求。如果找不到权重值,甚至可能使用推理器,则标记未能提供权重的实例。更精细的解决方案是使用Pellet声明完整性约束。 Pellet正在使用OWL的扩展,允许人们声明您感兴趣的类型的完整性约束(例如,所需的值)。可能有其他非标准扩展或工具可以指定您需要的内容,但所有这些都超出了OWL和RDF(S)的范围。
答案 1 :(得分:2)
您想要实现的目标通常是使用SPARQL完成的。
您可以编写一个SPARQL查询,该查询将返回没有“权重”的所有“物理产品”(使用NOT EXISTS {...})。然后你可以“标记”返回的元素。请注意,“flag”的含义并不清楚。
使用SPARQL规则(如SPIN)是一种很好的方法。此非标准扩展允许使用SPARQL查询作为数据的约束。它很好地集成在Topbraid Composer中...即使是免费版,如果我是正确的。
答案 2 :(得分:0)
您需要使用存在限制(即某些)。在描述逻辑中,它可以表述为: = 3PhysicalProducts.requireWeight U~(3PhysicalProducts.requireWeight)
The sign 3 is the some restriction;
U is logical OR;
~ is the negation;