在 SHOIN(D) 中,相当于 OWL-DL 使用的 DL 系列;这个表达是否合法:
F ⊑ (≤1 r. D) ⊓ (¬ (=0 r. D))
其中 F、D 是概念,r 是角色。我想表达的是,F 的每个实例最多与 D 到 r 的一个实例相关,而不是与零个实例相关。
一般来说,如何确定某些表达式对于 DL 的特定变体是合法的?我认为使用变体的 BNF 语法可能是我的目标。
在 SHOIN(D) 中,相当于 OWL-DL 使用的 DL 系列;这个表达是否合法:
F ⊑ (≤1 r. D) ⊓ (¬ (=0 r. D))
其中 F、D 是概念,r 是角色。我想表达的是,F 的每个实例最多与 D 到 r 的一个实例相关,而不是与零个实例相关。
一般来说,如何确定某些表达式对于 DL 的特定变体是合法的?我认为使用变体的 BNF 语法可能是我的目标。
一种简单的方法是检查您是否可以在 Protege 中编写它。 您可以在 Protege 中编写的大部分内容都是合法的 OWL-DL。在 Protege 中,您可以编写:
F SubClassOf ((r max 1 D)而不是(r正好0 D))
当然,说某物最多有 1 个值,而不是完全有 1 与说它正好有 1 完全一样:
F SubClassOf r正好1 D
但是你可以在 Protege 中做一些不合法的 OWL-DL 的事情。找出这些是什么的更直接的方法是标准,特别是 OWL 2 DL 中的 §11 Global Restrictions on Axioms。通常,您可能遇到的唯一问题是尝试在不允许使用的地方使用复合属性。
如果您不想手动检查,那么您可以尝试将您的本体上传到OWL Validator并选择OWL2 DL profile。