是否可以在OWL2中定义多值DataProperty,指定给定案例应采用的不同值?

时间:2016-01-27 21:23:32

标签: owl protege owl-api

使用OWL-API和Protégé进行测试,为OWL2重新生成本体。

有些概念是许多超类的子类,有些DataProperties应该采用多个值,例如:

Artifactual Location&人工区域

我想指明:

•对于 Artifactual Location ,DataProperty hasConcreteEntityType 应采用值 LOCATION ARTIFACT

•对于 Artifactual Area ,DataProperty hasConcreteEntityType 应采用值 ARTIFACTUAL_LOCATION AREA

Class Tree & Class Descriptions

但是在激活推理器后,我将Artifactual Location错误分类为 Nothing (但不是两者)

Inference Explanations

我不明白推理解释有什么问题,但似乎应该有第三个解释,如第二个但与 AREA 的值有关,所以似乎不支持bi像这样的评估属性,或者,可能有另一种方法来定义和约束多值DataProperty的值,甚至推理器也不能正常工作,

即时通讯使用隐士1.3.8.3

1 个答案:

答案 0 :(得分:0)

引用我之前回答的评论(我删除了答案,因为它不正确)

  

[本体]应该在这里drive.google.com/file/d/0B2FYMQD3DD8DNWtteUlLcDgyTGM/查看Morphosyntactic Unit的linguisticUnitType属性,正如我定义的那样(有两个值,MORPHOLOGICAL和SYNTACTIC)它被分类为罚款推理器,但它与属性hasConcreteEntityType和hasLocationType的行为不相同,关于Nothing Artifactual Area和Artifactual Location的类。我不明白为什么一个案件没有问题但另一个案件没有,因为属性和限制是以相同的方式定义的。

问题在于Artifactual Area被定义为Location的子类,它已将hasConcreteType的值限制为仅一个值(LOCATION)。为了使Artifactual Area具有正好两个值,必须删除或修改对超类的限制。

为了将来参考,功能语法中的片段在这里:

Ontology(<http://localhost/pruebaLUO.owl>

DataPropertyDomain(:hasConcreteEntityType :ConcreteEntity)
DataPropertyRange(:hasConcreteEntityType DataOneOf("ARTIFACT"^^xsd:string "FOOD"^^xsd:string "LIVING_ENTITY"^^xsd:string "LOCATION"^^xsd:string "MATERIAL"^^xsd:string "ORGANIC_OBJECT"^^xsd:string "PHYSICAL_OBJECT"^^xsd:string "SUBSTANCE"^^xsd:string))

DataPropertyDomain(:hasLocationType :Location)
DataPropertyRange(:hasLocationType DataOneOf("3D"^^xsd:string "AREA"^^xsd:string "ARTIFACTUAL_LOCATION"^^xsd:string "GEOPOLITICAL"^^xsd:string "OPENING"^^xsd:string "OTHER"^^xsd:string))

DataPropertyDomain(:linguisticUnitType :LinguisticUnit)
DataPropertyRange(:linguisticUnitType DataOneOf("MORPHOLOGICAL"^^xsd:string "SEMANTIC"^^xsd:string "SYNTACTIC"^^xsd:string))

AnnotationAssertion(rdfs:label :Area "Area"@en)
SubClassOf(:Area :Location)
SubClassOf(:Area DataHasValue(:hasLocationType "AREA"^^xsd:string))

AnnotationAssertion(rdfs:label :Artifact "Artifact"@en)
SubClassOf(:Artifact :ConcreteEntity)
SubClassOf(:Artifact DataHasValue(:hasConcreteEntityType "ARTIFACT"^^xsd:string))

SubClassOf(:ArtifactualArea :Area)
SubClassOf(:ArtifactualArea :ArtifactualLocation)
SubClassOf(:ArtifactualArea DataExactCardinality(2 :hasLocationType DataOneOf("AREA"^^xsd:string "ARTIFACTUAL_ LOCATION"^^xsd:string)))

SubClassOf(:ArtifactualLocation :Artifact)
SubClassOf(:ArtifactualLocation :Location)
SubClassOf(:ArtifactualLocation DataHasValue(:hasLocationType "ARTIFACTUAL_ LOCATION"^^xsd:string))
SubClassOf(:ArtifactualLocation DataExactCardinality(2 :hasConcreteEntityType DataOneOf("ARTIFACT"^^xsd:string "LOCATION"^^xsd:string)))

SubClassOf(:Building :ArtifactualLocation)
SubClassOf(:ConcreteEntity :GenericEntity)
SubClassOf(:Entity :PropositionalComponent)
SubClassOf(:GenericEntity :Entity)
SubClassOf(:Location :ConcreteEntity)
SubClassOf(:Location DataHasValue(:hasConcreteEntityType "LOCATION"^^xsd:string))
SubClassOf(:MorphologicalUnit :LinguisticUnit)
SubClassOf(:MorphologicalUnit DataHasValue(:linguisticUnitType "MORPHOLOGICAL"^^xsd:string))
SubClassOf(:MorphosyntacticUnit :MorphologicalUnit)
SubClassOf(:MorphosyntacticUnit :Token)
SubClassOf(:MorphosyntacticUnit DataExactCardinality(2 :linguisticUnitType DataOneOf("MORPHOLOGICAL"^^xsd:string "SYNTACTIC"^^xsd:string)))
SubClassOf(:PropositionalComponent :SemanticUnit)
SubClassOf(:SemanticUnit :LinguisticUnit)
SubClassOf(:SemanticUnit DataHasValue(:linguisticUnitType "SEMANTIC"^^xsd:string))
SubClassOf(:SyntacticUnit :LinguisticUnit)
SubClassOf(:SyntacticUnit DataHasValue(:linguisticUnitType "SYNTACTIC"^^xsd:string))
SubClassOf(:Token :SyntacticUnit)
)