3

有没有办法个人(实例)连接到具有对象属性的类?例如,本例中的个人是模块名称:Web Programming。对象属性:isClassified。类别:网络。

我试图将 Web 编程定义为类,它之所以有效,是因为域和范围都是类。如果我将 Web 编程和网络都定义为个人,也是如此,它可以工作。如果域是一个类并且范围是单个的,它仍然有效。但是如果域是个体而范围是类呢?有什么方法可以将它与对象属性连接起来:isClassifiedIn?

4

2 回答 2

4

Protégé 是一个 OWL 2 DL 编辑器(从版本 4 开始)。在 OWL 2 DL 中,个体不能是一个类,并且对象属性必须仅将个体与个体相关联。所以你想要的东西不能用你制定它的方式来表达。但是,您可以做两件事:

  1. 使用注释属性而不是对象属性。这可能并不理想,因为 OWL DL 推理器必须在推理过程中忽略注释属性。它们就是:注释,类似于编程代码中的注释。
  2. 将个人与与班级同名的另一个个人联系起来。让我详细说明一下。

在 OWL 2 DL 中,虽然个体不可能是类,但个体名称可能同时是类名称。例如,可以说(在 Turtle 语法中):

ex:Module  a  owl:Class .
ex:Network  a  owl:Class, owl:Thing .
ex:isClassified  a  owl:ObjectProperty .
ex:webProgramming  a  ex:Module;
    ex:isClassified  ex:Network .

请注意,ex:webProgramming这里与一个类无关。它与类型的个体有关owl:Thing。这个个体与名为 的类没有任何关系ex:Network,尽管它具有相同的名称。这在 OWL 2 规范中称为“双关语”。

第三种方法:改变你的知识模型,这样你就不会遇到这个问题。我不知道你的本体,但它可能暗示你应该避免的反模式。

于 2016-10-06T19:07:22.810 回答
2

你必须使用“价值”。使用类表达式编辑器编写您自己的表达式。选择类比写:“属性”值“个人”

于 2018-11-19T17:24:57.757 回答