0

我有 OWL 本体,Protege 5。我想从源类 S 开始,通过 objectProperty 即 S ([0..*] - 1) 通过一对一的基数检索所有目标类 D,其中 S 与 Ds 相关D 尽管连接的 objectProperty 是什么。

在 DL 中,它类似于:

S ⊑ =1r:D;

其中 S 是我的源概念,D 是变量概念,r 是变量 objectProperty。

第一点: 如何在曼彻斯特语法中表达这一点以在 Protege DL 查询中使用它?

第二点: 对于这样的查询,推理者在尝试回答查询时会考虑哪些类型的属性限制?例如基数限制、函数属性、someValuesFrom、allValuesFrom?

谢谢。

4

1 回答 1

1

您无法在 DL 查询语法中编写您所询问的那种查询。DL 查询语法没有变量的位置;你只能写类表达式,然后你可以询问该类中的个人,或者该类的子类或超类。所以第一个问题的答案是你不能用曼彻斯特语法表达你的查询。

对于第二点,可能有推理可以帮助您在这里得出结论。例如,您可以使用支持 SPARQL 查询的推理器并使用变量编写类表达式的模板。你最终会得到这样的东西(但这是未经测试的):

prefix xsd:  <http://www.w3.org/2001/XMLSchema#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl:  <http://www.w3.org/2002/07/owl#>

select ?s ?p ?d where {
  ?s rdfs:subClassOf [ a owl:Restriction ; 
                       owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                       owl:onProperty ?p ;
                       owl:onClass ?d ]
}

我不知道大多数 OWL 推理者是否能够处理这个问题。如上所述,OWL 推理器的典型任务是查看类表达式并确定其子类和超类。这变得越来越复杂。

于 2014-10-13T14:26:34.580 回答