SPARQL查询从OWL文件

时间:2015-12-08 20:14:51

标签: sparql owl

我需要一些帮助来编写查询。

要检索的数据: 动物"动物"的所有实例它有"苍蝇"布尔值设为true。

OWL文件(它一团糟):

<?xml version="1.0"?>

<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" >
    <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY assert "http://www.owl-ontologies.com/assert.owl#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <!ENTITY protege "http://protege.stanford.edu/plugins/owl/protege#" >
    <!ENTITY xsp "http://www.owl-ontologies.com/2005/08/07/xsp.owl#" >
    <!ENTITY swrla "http://swrl.stanford.edu/ontologies/3.3/swrla.owl#" >
    <!ENTITY sqwrl "http://sqwrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl#" >
]>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://www.owl-ontologies.com/Animals.owl#"
    xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
    xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"
    xmlns:assert="http://www.owl-ontologies.com/assert.owl#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:sqwrl="http://sqwrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:swrl="http://www.w3.org/2003/11/swrl#"
    xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:swrla="http://swrl.stanford.edu/ontologies/3.3/swrla.owl#"
  xml:base="http://www.owl-ontologies.com/Animals.owl">
  <owl:Ontology rdf:about="">
    <owl:imports rdf:resource="http://sqwrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl"/>
    <owl:imports rdf:resource="http://swrl.stanford.edu/ontologies/3.3/swrla.owl"/>
    <owl:imports rdf:resource="http://www.owl-ontologies.com/assert.owl"/>
  </owl:Ontology>

  <owl:Class rdf:ID="Carnivore">
  <rdfs:label xml:lang="gr">Σαρκοφάγο</rdfs:label>
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Living_thing"/>
    </rdfs:subClassOf>
  </owl:Class>

    <owl:Class rdf:ID="Plant">
     <owl:complementOf>
                  <owl:Class rdf:about="#Animal"/>
                </owl:complementOf>
    <rdfs:label xml:lang="gr">Φυτό</rdfs:label>
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Living_thing"/>
    </rdfs:subClassOf>
  </owl:Class>


  <owl:Class rdf:ID="Perioxi">
  <rdfs:label xml:lang="gr">Περιοχή</rdfs:label>
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Domain_entity"/>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="Living_thing">
  <owl:complementOf>
                  <owl:Class rdf:about="#Perioxi"/>
                </owl:complementOf>
  <rdfs:label xml:lang="gr">Οργανισμός</rdfs:label>
    <rdfs:subClassOf>
     <owl:Restriction>
        <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <owl:onProperty>
          <owl:DatatypeProperty rdf:ID="belongs"/>
        </owl:onProperty>
         </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
    <owl:Restriction>
        <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <owl:onProperty>
          <owl:DatatypeProperty rdf:ID="kind"/>
        </owl:onProperty>
         </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
    <owl:Restriction>
        <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
       <owl:onProperty>
      <owl:DatatypeProperty rdf:ID="flys"/>
        </owl:onProperty>
        </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
    <owl:Restriction>
        <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
        <owl:onProperty>
          <owl:DatatypeProperty rdf:ID="population"/>
        </owl:onProperty>
        </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="#Domain_entity"/>
  </owl:Class>

  <owl:Class>
    <owl:unionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Living_thing"/>
      <owl:Class rdf:about="#Animal"/>
    </owl:unionOf>
  </owl:Class>

  <owl:Class rdf:ID="Carnivore">
    <rdfs:subClassOf>
    <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:ID="kind"/>
            </owl:onProperty>
            <owl:allValuesFrom rdf:resource="#Animal"/>
          </owl:Restriction>
        </owl:unionOf>
      </owl:Class>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:allValuesFrom>
          <owl:Class>
            <owl:intersectionOf rdf:parseType="Collection">
              <owl:Class rdf:about="#Animal"/>
              <owl:Class>
                <owl:complementOf>
                  <owl:Class rdf:about="#Plant"/>
                </owl:complementOf>
              </owl:Class>
            </owl:intersectionOf>
          </owl:Class>
        </owl:allValuesFrom>
        <owl:onProperty>
          <owl:TransitiveProperty rdf:about="#eats"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#Living_thing"/>
    </rdfs:subClassOf>
  </owl:Class>


  <owl:Class rdf:ID="Herbivore">
  <rdfs:label xml:lang="gr">Φυτοφάγο</rdfs:label>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#Living_thing"/>
    </rdfs:subClassOf>
  </owl:Class>

<owl:Class rdf:about="#Ellinika_zwa">
<rdfs:label xml:lang="gr">Ελληνικά_ζώα</rdfs:label>
<rdfs:subClassOf>
      <owl:Restriction>
        <owl:allValuesFrom rdf:resource="#Animal"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#kind"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:hasValue rdf:resource="#Greece"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#lives-in"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="#Living_thing"/>
  </owl:Class>



  <owl:Class rdf:about="#Animal">
  <owl:complementOf>
                  <owl:Class rdf:about="#Plant"/>
                </owl:complementOf>
  <rdfs:label xml:lang="gr">Ζώο</rdfs:label>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#lives-in"/>
        </owl:onProperty>
        <owl:someValuesFrom rdf:resource="#Perioxi"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="#Living_thing"/>
  </owl:Class>

  <owl:Class rdf:ID="Dangerous_Animals_America">
  <rdfs:label xml:lang="gr">Αρπακτικά_Αμερικής</rdfs:label>
  <rdfs:subClassOf>
      <owl:Restriction>
        <owl:allValuesFrom rdf:resource="#Carnivore"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#belongs"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
<rdfs:subClassOf>
      <owl:Restriction>
        <owl:allValuesFrom rdf:resource="#America"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#lives-in"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
  <rdfs:subClassOf>
      <owl:Restriction>
        <owl:hasValue rdf:resource="#True"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#flys"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="#Living_thing"/>
</owl:Class>

  <owl:Class rdf:ID="Europe">
   <owl:complementOf>
                  <owl:Class rdf:about="#Asia"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#Africa"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#America"/>
                </owl:complementOf>
  <rdfs:label xml:lang="gr">Ευρώπη</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Perioxi"/>
  </owl:Class>

  <owl:Class rdf:ID="Asia">
  <owl:complementOf>
                  <owl:Class rdf:about="#Europe"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#Africa"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#America"/>
                </owl:complementOf>
  <rdfs:label xml:lang="gr">Ασία</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Perioxi"/>
  </owl:Class>

    <owl:Class rdf:ID="America">
    <owl:complementOf>
                  <owl:Class rdf:about="#Asia"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#Africa"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#Europe"/>
                </owl:complementOf>
    <rdfs:label xml:lang="gr">Αμερική</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Perioxi"/>
  </owl:Class>

    <owl:Class rdf:ID="Africa">
    <owl:complementOf>
                  <owl:Class rdf:about="#Asia"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#Europe"/>
                </owl:complementOf>
                 <owl:complementOf>
                  <owl:Class rdf:about="#America"/>
                </owl:complementOf>
    <rdfs:label xml:lang="gr">Αφρική</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Perioxi"/>
  </owl:Class>

<owl:Class rdf:about="#Herbivore">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:allValuesFrom rdf:resource="#Plant"/>
        <owl:onProperty>
          <owl:TransitiveProperty rdf:about="#eats"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:allValuesFrom rdf:resource="#Animal"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#kind"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="#Living_thing"/>
  </owl:Class>




  <owl:ObjectProperty rdf:ID="eatable">
  <rdfs:label xml:lang="gr">τρώγεται</rdfs:label>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#TransitiveProperty"/>
    <owl:inverseOf>
      <owl:ObjectProperty rdf:ID="eats"/>
    </owl:inverseOf>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="isancestor">
  <rdfs:label xml:lang="gr">πρόγονος</rdfs:label>
   <rdf:type rdf:resource="&owl;TransitiveProperty"/>
    <rdfs:range rdf:resource="#Living_thing"/>
    <rdfs:domain rdf:resource="#Living_thing"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="lives-in">
  <rdfs:label xml:lang="gr">ζει-σε</rdfs:label>
    <rdfs:range rdf:resource="#Perioxi"/>
    <rdfs:domain rdf:resource="#Living_thing"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="competitor">
  <rdfs:label xml:lang="gr">ανταγωνιστής</rdfs:label>
  <rdf:type rdf:resource="&owl;SymmetricProperty"/>
    <rdfs:range rdf:resource="#Living_thing"/>
    <rdfs:domain rdf:resource="#Living_thing"/>
  </owl:ObjectProperty >

  <owl:ObjectProperty rdf:about="#eats">
  <rdfs:label xml:lang="gr">τρώει</rdfs:label>
    <owl:inverseOf rdf:resource="#eatable"/>
    <rdfs:range>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Animal"/>
          <owl:Class rdf:about="#Living_thing"/>
          <owl:Class rdf:about="#Herbivore"/>
          <owl:Class rdf:about="#Dangerous_Animals_America"/>
          <owl:Class rdf:about="#Ellinika_zwa"/>
          <owl:Class rdf:about="#Carnivore"/>
          <owl:Class rdf:about="#Plant"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:range>
    <rdfs:domain rdf:resource="#Living_thing"/>
  </owl:ObjectProperty>

<owl:DatatypeProperty rdf:about="#kind">
<rdfs:label xml:lang="gr">είδος</rdfs:label>
<rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Herbivore"/>
          <owl:Class rdf:about="#Carnivore"/>
          <owl:Class rdf:about="#Dangerous_Animals_America"/>
          <owl:Class rdf:about="#Ellinika_zwa"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:about="#belongs">
  <rdfs:label xml:lang="gr">ανήκει-στο-γένος</rdfs:label>
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Animal"/>
          <owl:Class rdf:about="#Plant"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="flys">
  <rdfs:label xml:lang="gr">πετάει</rdfs:label>
    <rdfs:domain rdf:resource="#Animal"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
  </owl:DatatypeProperty>

   <owl:DatatypeProperty rdf:ID="population">
   <rdfs:label xml:lang="gr">πληθυσμός</rdfs:label>
    <rdfs:domain rdf:resource="#Animal"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
  </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:ID="name">
    <rdfs:label xml:lang="gr">όνομα</rdfs:label>
    <rdfs:domain rdf:resource="#Perioxi"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
  </owl:DatatypeProperty>





  <Animal rdf:ID="bear">
  <rdfs:type xml:lang="gr">Αρκούδα</rdfs:type>
    <belongs rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Carnivore</belongs>
    <lives-in rdf:resource="Europe"/>
    <eats rdf:resource="Animal"/>
    <flys rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
     >false</flys>
  </Animal>

  <Animal rdf:ID="wolf">
  <rdfs:type xml:lang="gr">Λύκος</rdfs:type>
    <belongs rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Carnivore</belongs>
    <lives-in rdf:resource="Europe"/>
    <eats rdf:resource="Animal"/>
    <flys rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
     >false</flys>
  </Animal>

  <Plant rdf:ID="lettuce">
   <rdfs:type xml:lang="gr">Μαρούλι</rdfs:type>
    <belongs rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Plant</belongs>
  </Plant>

    <Plant rdf:ID="pefkos">
       <rdfs:type xml:lang="gr">Πεύκο</rdfs:type>
    <belongs rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Plant</belongs>
  </Plant>


    <Herbivore rdf:ID="horse">
       <rdfs:type xml:lang="gr">Άλογο</rdfs:type>
    <belongs rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Herbivore</belongs>
    <lives-in rdf:resource="Europe"/>
    <eats rdf:resource="Plant"/>
    <flys rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
     >false</flys>
  </Herbivore>

  <Herbivore rdf:ID="elephant">
     <rdfs:type xml:lang="gr">Ελέφαντας</rdfs:type>
    <belongs rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Herbivore</belongs>
    <lives-in rdf:resource="Europe"/>
    <eats rdf:resource="Plant"/>
    <flys rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
     >false</flys>
  </Herbivore>



  <Europe rdf:ID="Italy">
     <rdfs:name xml:lang="gr">Ιταλία</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >Italy</name>
  </Europe>

   <Europe rdf:ID="Greece">
   <rdfs:name xml:lang="gr">Ελλάδα</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >Greece</name>
  </Europe>

   <Africa rdf:ID="Nigeria">
   <rdfs:name xml:lang="gr">Νιγηρία</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >Nigeria</name>
  </Africa>

  <Africa rdf:ID="Senegal">
  <rdfs:name xml:lang="gr">Σενεγάλη</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >Senegal</name>
  </Africa>

  <Asia rdf:ID="China">
  <rdfs:name xml:lang="gr">Κίνα</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >China</name>
  </Asia>

    <Asia rdf:ID="Japan">
    <rdfs:name xml:lang="gr">Ιαπωνία</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >Japan</name>
  </Asia>

    <America rdf:ID="USA">
    <rdfs:name xml:lang="gr">Η.Π.Α</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >USA</name>
  </America>

   <America rdf:ID="Brasil">
   <rdfs:name xml:lang="gr">Βραζιλία</rdfs:name>
   <name rdf:datatype ="http://www.w3.org/2001/XMLSchema#string"
    >Brasil</name>
  </America>


</rdf:RDF>

我写的查询(不应该返回任何结果,但是,它仍然不起作用):

PREFIX anims:<http://www.owl-ontologies.com/Animal.owl#>
SELECT *
FROM <http://www.owl-ontologies.com/Animal.owl>
WHERE {?A anims:flys true}

1 个答案:

答案 0 :(得分:0)

根据你的.owl文件的内容(我把整个文件打印在这里),它无效的主要原因是你在无效的命名空间中搜索。文件中没有前缀定义为anims。您可以使用Protege修改此项,也可以在!DOCTYPE rdf:RDF块中添加以下行:

<!ENTITY anims "http://www.owl-ontologies.com/Animal.owl#" >

应该这样做;)