繁体   English   中英

如何使用基数约束将 class 链接到 protege 中的实例?

[英]How do I use the cardinality constraint to link a class to a instance in protege?

例如,来自 class A 的所有个人只能在一个位置 B 使用——一个实例。 我想在(仅/确切的 1)[位置 B] 使用“A 类”。 但似乎这种约束只能在类之间进行。 如何在不创建实例“位置 B”的空 class 的情况下做到这一点?

谢谢。

如果您想说 class A的所有实例都位于实例B并且仅位于B ,您可以使用以下(Turtle 语法)执行此操作:

:A  a  owl:Class;
  rdfs:subClassOf  [
    a  owl:Restriction;
    owl:allValuesFrom  [
      a  owl:Class;
      owl:oneOf  ( :B )
    ]
  ], [
    a  owl:Restriction;
    owl:onProperty  :location;
    owl:hasValue  :B
  ] .

但是请注意,名为B的事物可能有其他名称,所以如果您知道:

:x  a  :A;
   :location  :C, :D .

那么您可以得出结论, CD是名为B的事物的另外两个名称。 如果您希望将其检测为错误或错误,您可以明确指出CD所命名的事物与B不同:

:B  owl:differentFrom  :C, :D .

或者您可以使用 SHACL 之类的约束语言,或者您可以依赖唯一名称假设 (UNA) 进行推理过程(但是,标准 OWL 不会生成 UNA,因此您不能期望外部数据符合此假设)。

还要注意,如果您想描述对数据的约束,例如当某个实体已知是A的实例时,那么在数据中必须有它位于B中的语句,您需要使用像 SHACL 这样的约束语言(描述应该如何塑造数据),而不是像 OWL 这样的知识表示语言(描述世界怎样的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM