让我们假设3种实体:
让我们考虑以下基数约束:
在OWL中建模并不困难。但是,我还有以下约束: - 在给定任务中,算法只有一个参数化。也就是说,应该在具有特定参数化的任务中使用给定算法。
为了澄清约束,让我们假设如下。我们假设A为算法,T为任务,P为参数化。所以,我们有:
∀a,y A(a)∧T(t)∧usedIn(a,t)⇒∃!p P(p)∧confures(p,a,t)
也就是说,对于所有算法a和所有任务t,如果在t中使用a,则只有一个参数化p为任务t配置算法a。
但是,我不知道如何在OWL中表示这个约束。是否可以在OWL中对此进行建模?我们如何处理这个问题?
我还想说公理有点奇怪,但这是客户提供的约束。另外,我认为讨论这个案子很有意思,仅仅是为了讨论OWL的局限性。
答案 0 :(得分:1)
如果算法的实例是特定算法,我想你有类似的东西:
GraphSearchAlgorithm⊑算法
depthFirstSearch∈ThaphSearchAlgorithm
breadthFirstSearch∈TigmaSearchAlgorithm
然后,您提到任务使用算法的参数化。我想这意味着而不是
任务 72 →使用 breadthFirstSearch
你实际上有类似的东西:
任务 72 →使用参数化 83
参数化 83 → usesAlgorithm breadthFirstSearch
参数化 83 → usesParameters 参数 24
也就是说,该任务有许多参数化(你可以使用不同的名称),每个参数都指定一个算法和实际参数。如果是这种情况,那么我理解你的约束是算法不使用具有相同算法的多个参数化。在FOL中,你会有类似的东西:
∀t,p,a [(使用(t,p)∧使用算法(p,a))→¬∃q(p≠q∧使用(t,q)∧使用算法(q,a))] < / p>
如果这是意图,那么这可能超过了OWL的限制。通常的经验法则之一(根据像属性链这样的东西不完全准确,但仍然是一个有用的经验法则)是你是否可以只使用两个变量来编写公式。在这种情况下,外部量化需要三个(任务,参数化和算法),你无法真正解决这个问题。