0

我在使用基于对象属性基数的 DL 查询时遇到问题,我不确定我做错了什么,或者 HermiT 有什么问题。

首先,我附上了一个非常简单的本体来演示我的问题。只有两个个体AB并且对象属性hasSomethingA hasSomething B是真的。

以下 DL 查询返回A作为结果:

hasSomething min 1

而查询

hasSomething exactly 1

不能满足。

有谁知道为什么第一个有效而第二个无效?

@prefix : <http://www.semanticweb.org/cg/ontologies/2015/9/untitled-ontology-3#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.semanticweb.org/cg/ontologies/2015/9/untitled-ontology-3> .

<http://www.semanticweb.org/cg/ontologies/2015/9/untitled-ontology-3> rdf:type owl:Ontology .


#################################################################
#
#    Object Properties
#
#################################################################


###  http://www.semanticweb.org/cg/ontologies/2015/9/untitled-ontology-3#hasSomething

:hasSomething rdf:type owl:ObjectProperty .





#################################################################
#
#    Classes
#
#################################################################


###  http://www.semanticweb.org/cg/ontologies/2015/9/untitled-ontology-3#SimpleClass

:SimpleClass rdf:type owl:Class .





#################################################################
#
#    Individuals
#
#################################################################


###  http://www.semanticweb.org/cg/ontologies/2015/9/untitled-ontology-3#A

:A rdf:type owl:NamedIndividual ;

   :hasSomething :B .



###  http://www.semanticweb.org/cg/ontologies/2015/9/untitled-ontology-3#B

:B rdf:type owl:NamedIndividual .




###  Generated by the OWL API (version 3.5.1) http://owlapi.sourceforge.net
4

1 回答 1

2

由于开放世界假设 (OWA),无法完成查询。

来自OWL2 入门

如果数据库中不存在某些事实,则通常认为它是错误的(所谓的封闭世界假设),而在 OWL 2 文档的情况下,它可能只是丢失(但可能是真的),遵循开放世界假设

csnyluas 是一名受保护的贡献者/维护者,他给出了以下答案:

这是对的。由于 OWL 中的开放世界假设 (OWA),根据您的断言,推理器无法推断 A 与 B 之外的其他个人没有其他“hasSomething”关系。

如果您将修改本体以声明 A 是 SimpleClass 类型,并且 SimpleClass 是“hasSomething 正好 1”的子类,那么推理器将返回 A 作为“hasSomething min 1”和“hasSomething 正好 1”的实例。

于 2015-10-09T08:55:19.993 回答