OWL / owlapi:获取具有“不满意”对象属性的个人

时间:2017-01-07 17:24:50

标签: sparql owl ontology dlquery

我正在使用Protégé5.1.0中的OWL本体(加上HermiT 1.3.8.413推理器),我后来想要使用OWLAPI 4.1.0以及DL-Query或SPARQL。我的任务是让一个具有某个对象属性的类的所有个体都无法实现。由于开放世界的假设,一个未实现的对象属性通常不会显示为问题,但我需要这些信息,并希望避免编写自己的代码来检查整个本体。

我准备了一个小例子,作为可读文本和Turtle代码:

  

课程:比萨 Topping

     

对象属性:

     

断言:披萨 一些 Topping

     

个人:Pizza1,Pizza2,Topping1,Topping2(各个类别)

     

断言:Pizza1 Topping1

代码:

@prefix : <http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#> .
@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/user/ontologies/2017/0/untitled-ontology-23> .

<http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23> rdf:type owl:Ontology .

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

###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#has
:has rdf:type owl:ObjectProperty ;
     owl:inverseOf :isOn .


###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#isOn
:isOn rdf:type owl:ObjectProperty ,
               owl:FunctionalProperty .


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

###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#Pizza
:Pizza rdf:type owl:Class ;
       rdfs:subClassOf [ rdf:type owl:Restriction ;
                         owl:onProperty :has ;
                         owl:someValuesFrom :Topping
                       ] .


###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#Topping
:Topping rdf:type owl:Class .


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

###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#Pizza1
:Pizza1 rdf:type owl:NamedIndividual ,
                 :Pizza ;
        :has :Topping1 .


###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#Pizza2
:Pizza2 rdf:type owl:NamedIndividual ,
                 :Pizza .


###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#Topping1
:Topping1 rdf:type owl:NamedIndividual ,
                   :Topping ;
          :isOn :Pizza1 .


###  http://www.semanticweb.org/user/ontologies/2017/0/untitled-ontology-23#Topping2
:Topping2 rdf:type owl:NamedIndividual ,
                   :Topping .


#################################################################
#    General axioms
#################################################################

[ rdf:type owl:AllDifferent ;
  owl:distinctMembers ( :Pizza1
                        :Pizza2
                      )
] .


[ rdf:type owl:AllDifferent ;
  owl:distinctMembers ( :Topping1
                        :Topping2
                      )
] .


###  Generated by the OWL API (version 4.2.6.20160910-2108) https://github.com/owlcs/owlapi

在这种情况下,我想查询本体并获得Pizza2当前没有任何Topping的信息,即其对象属性未被断言或推断。此外,如果将Topping1更改为不同的类,我现在也希望在查询中显示Pizza1,因为“披萨 某些 Topping < / strong>“不满意。

是否有一种优雅的方法可以直接在OWLAPI或使用DL-Query / SPARQL中执行此操作?

0 个答案:

没有答案