Fuseki推理器并不推断数据(int)范围类

时间:2016-03-30 11:30:52

标签: sparql jena owl protege fuseki

为了向您展示问题(这是一个错误),我创建了一个最小示例:

这是我的最低本体论

@prefix : <http://www.test.com/ts#> .
@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#> .

<http://www.test.com/ts> a owl:Ontology .
# 
# 
# #################################################################
# #
# #    Object Properties
# #
# #################################################################
# 
# 
# http://www.test.com/ts#hasSex

:hasSex a owl:ObjectProperty , owl:FunctionalProperty ;
    rdfs:range :Sex .
# 
# 
# 
# #################################################################
# #
# #    Data properties
# #
# #################################################################
# 
# 
# http://www.test.com/ts#hasAge

:hasAge a owl:DatatypeProperty , owl:FunctionalProperty ;
    rdfs:range xsd:int .
# 
# 
# 
# #################################################################
# #
# #    Classes
# #
# #################################################################
# 
# 
# http://www.test.com/ts#FemaleUser

:FemaleUser a owl:Class ;
    owl:equivalentClass _:genid1 .

_:genid1 owl:intersectionOf _:genid4 .

_:genid4 a rdf:List ;
    rdf:first :User ;
    rdf:rest _:genid2 .

_:genid2 a rdf:List ;
    rdf:first _:genid3 .

_:genid3 a owl:Restriction ;
    owl:onProperty :hasSex ;
    owl:hasValue :female .

_:genid2 rdf:rest rdf:nil .

_:genid1 a owl:Class .
# 
# http://www.test.com/ts#MatureUser

:MatureUser a owl:Class ;
    owl:equivalentClass _:genid5 .

_:genid5 owl:intersectionOf _:genid11 .

_:genid11 a rdf:List ;
    rdf:first :User ;
    rdf:rest _:genid6 .

_:genid6 a rdf:List ;
    rdf:first _:genid7 .

_:genid7 a owl:Restriction ;
    owl:onProperty :hasAge ;
    owl:someValuesFrom _:genid8 .

_:genid8 a rdfs:Datatype ;
    owl:onDatatype xsd:int ;
    owl:withRestrictions _:genid9 .

_:genid9 a rdf:List ;
    rdf:first _:genid10 .

_:genid10 xsd:minInclusive "16"^^xsd:int .

_:genid9 rdf:rest rdf:nil .

_:genid6 rdf:rest rdf:nil .

_:genid5 a owl:Class .
# 
# http://www.test.com/ts#Sex

:Sex a owl:Class .
# 
# http://www.test.com/ts#User

:User a owl:Class .
# 
# 
# 
# #################################################################
# #
# #    Individuals
# #
# #################################################################
# 
# 
# http://www.test.com/ts#ania

:ania a owl:NamedIndividual , :User ;
    :hasSex :female ;
    :hasAge "18"^^xsd:int .
# 
# http://www.test.com/ts#female

:female a owl:NamedIndividual , :Sex .
# 
# http://www.test.com/ts#male

:male a owl:NamedIndividual , :Sex .
# 
# Generated by the OWL API (version 4.1.3.20151118-2017) https://github.com/owlcs/owlapi

有两个类:

一个MatureUser(适用于年龄超过16年的用户)和FemaleUser(适用于以女性为主的用户)

来自protege的截图:

enter image description here

你可以看到,proteia推断:ania既是女性又是成熟用户,但是,fuseki只是推断:ania是女性但不成熟

enter image description here

更新

我也尝试用这两种形式制作我的平等课程

  

用户和hasAge一些xsd:int [&gt; =&#34; 16&#34; ^^ xsd:int]

  

用户和hasAge一些xsd:int [&gt; = 16]

但结果相同,即Protege推断正确,而furseki没有。

1 个答案:

答案 0 :(得分:2)

Jena提供的OWL reasoners在逻辑上并不完整;这意味着(按设计)存在他们不会推断的OWL推论。 Protege中提供的OWL reasoners应该在逻辑上完整;这意味着他们应该产生所有必要的公理。

在这种情况下,Jena的OWL reasoners根本不做数据类型推理。这意味着他们不会对 xsd:int [&gt; = 16] 类型做任何事情。在这种情况下,这不仅仅是Jena的OWL reasoners不完整的问题,也是Jena的OWL reasoners针对OWL 1,但数据类型方面的推理是OWL 2的一部分,Jena并不完全支持。例如,请参阅2013年耶拿用户邮件列表中的this thread about datatype restrictions。 Dave Reynolds回复了与你类似的调查:

  

数据类型构面是OWL 2,Jena仅支持OWL 1。

     

可以使用像Pellet这样的第三方提供者来提供   一些OWL 2能力。

Jena不支持OWL2在文档中明确提到。有一个OWL2词汇表类只定义了OWL2中使用的IRI,其JavaDoc包括(强调添加):

  

OWL2词汇。注意: Jena不提供OWL2推理或OntModel支持。这些常量是为了方便那些使用当前OWL1支持并且需要一组合适名称的OWL2工作的用户而提供的。