![](/img/trans.png)
[英]Protege 5; find all classes related by a to-one cardinality to a specific class
[英]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 .
那么您可以得出结论, C
和D
是名为B
的事物的另外两个名称。 如果您希望将其检测为错误或错误,您可以明确指出C
和D
所命名的事物与B
不同:
:B owl:differentFrom :C, :D .
或者您可以使用 SHACL 之类的约束语言,或者您可以依赖唯一名称假设 (UNA) 进行推理过程(但是,标准 OWL 不会生成 UNA,因此您不能期望外部数据符合此假设)。
还要注意,如果您想描述对数据的约束,例如当某个实体已知是A
的实例时,那么在数据中必须有它位于B
中的语句,您需要使用像 SHACL 这样的约束语言(描述应该如何塑造数据),而不是像 OWL 这样的知识表示语言(描述世界是怎样的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.