首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将具有数据类型限制的本体分类为模式时,Pellet reasoner崩溃

将具有数据类型限制的本体分类为模式时,Pellet reasoner崩溃
EN

Stack Overflow用户
提问于 2015-10-08 04:49:17
回答 1查看 323关注 0票数 0

我有一个本体,它定义了一个新的数据类型作为对字符串类型的模式限制。然后将此数据类型用作特性范围限制。然后,类被定义为对此属性的限制:

代码语言:javascript
复制
@prefix : <http://test.com/prop#> .
@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://test.com/prop> .

<http://test.com/prop> rdf:type owl:Ontology .

:MyType rdf:type rdfs:Datatype ;
        owl:equivalentClass [ rdf:type rdfs:Datatype ;
                              owl:onDatatype xsd:string ;
                              owl:withRestrictions ( [ xsd:pattern "[a-zA-Z]*"
                                                     ]
                                                   )
                            ] .


#    Properties

:hasProperty rdf:type owl:ObjectProperty .
:hasValue rdf:type owl:DatatypeProperty .


#    Classes

:BaseClass rdf:type owl:Class .
:BaseProperty rdf:type owl:Class .

:MyClass rdf:type owl:Class ;
         owl:equivalentClass [ rdf:type owl:Class ;
                               owl:intersectionOf ( :BaseClass
                                                    [ rdf:type owl:Restriction ;
                                                      owl:onProperty :hasProperty ;
                                                      owl:someValuesFrom :MyProperty
                                                    ]
                                                  )
                             ] ;
         rdfs:subClassOf :BaseClass .

:MyProperty rdf:type owl:Class ;
            owl:equivalentClass [ rdf:type owl:Class ;
                                  owl:intersectionOf ( :BaseProperty
                                                       [ rdf:type owl:Restriction ;
                                                         owl:onProperty :hasValue ;
                                                         owl:someValuesFrom :MyType
                                                       ]
                                                     )
                                ] ;
            rdfs:subClassOf :BaseProperty .


#    Individuals

:Ind1 rdf:type :BaseClass ,
               owl:NamedIndividual ;
      :hasProperty :Prop1 .

:Prop1 rdf:type :BaseProperty ,
                owl:NamedIndividual ;
       :hasValue "Maier" .

Protege在使用Pellet reasoner对此本体进行分类时崩溃:

代码语言:javascript
复制
UnsupportedOperationException: null
    com.clarkparsia.pellet.datatypes.types.text.RestrictedTextDatatype.applyConstrainingFacet(RestrictedTextDatatype.java:93)
    com.clarkparsia.pellet.datatypes.DatatypeReasonerImpl.getDataRange(DatatypeReasonerImpl.java:440)

FaCT++推理器失败,出现异常:

代码语言:javascript
复制
ReasonerInternalException: Unsupported datatype 'http://test.com/prop#MyType'
uk.ac.manchester.cs.factplusplus.FaCTPlusPlus.getBuiltInDataType(Native Method)

作为一种限制,小球似乎只在模式上有问题。FaCT++似乎在使用用户定义的数据类型时遇到了问题。

我是不是在本体中有错误,或者推理者不能对这种模式限制进行分类?

EN

回答 1

Stack Overflow用户

发布于 2015-10-09 18:59:36

当前版本的FaCT++不支持用户定义的数据类型。因此,FaCT++的报告是正确的。

Pellet应该支持用户定义的数据类型,但您的定义不正确。owl:equivalentClass结构是a)来自过时的OWL 1语法,它不支持数据类型定义,b)只对类有效,而不是数据类型。我建议在数据类型定义中使用OWL2语法http://www.w3.org/TR/2012/REC-owl2-syntax-20121211/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33002173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档