W3C home > Mailing lists > Public > public-sparql-dev@w3.org > April to June 2009

Re: Sparql query help

From: Samuel Pedro <samuelcpspam@gmail.com>
Date: Fri, 12 Jun 2009 16:35:13 +0100
Message-ID: <cc48d5440906120835u65fd0c87r8ad04d7910273206@mail.gmail.com>
To: Stephane Corlosquet <scorlosquet@gmail.com>, Lee Feigenbaum <lee@thefigtrees.net>, public-sparql-dev@w3.org
Ok, tried to send as a attachment but probably something went wrong, i will
post here:

<?xml version="1.0"?>
<rdf:RDF
    xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"
    xmlns="http://www.owl-ontologies.com/testFood2.owl#"
    xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
    xmlns:swrl="http://www.w3.org/2003/11/swrl#"
    xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
  xml:base="http://www.owl-ontologies.com/testFood2.owl">
  <owl:Ontology rdf:about=""/>
  <owl:Class rdf:ID="Cow">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="RedMeat"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="Chicken">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="WhiteMeat"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="Pig2">
    <owl:equivalentClass>
      <owl:Class rdf:ID="Pig"/>
    </owl:equivalentClass>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#RedMeat"/>
    </rdfs:subClassOf>
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Pig2</rdfs:label>
  </owl:Class>
  <owl:Class rdf:ID="Onion">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Vegetable"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="Ingredients"/>
  <owl:Class rdf:about="#Pig">
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Pig</rdfs:label>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#RedMeat"/>
    </rdfs:subClassOf>
    <owl:equivalentClass rdf:resource="#Pig2"/>
  </owl:Class>
  <owl:Class rdf:ID="ChickenWithTomato">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Plates"/>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="hasIngridients"/>
        </owl:onProperty>
        <owl:someValuesFrom>
          <owl:Class>
            <owl:intersectionOf rdf:parseType="Collection">
              <owl:Class rdf:about="#Chicken"/>
              <owl:Class rdf:ID="Tomato"/>
            </owl:intersectionOf>
          </owl:Class>
        </owl:someValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="ChickenWithOnions">
    <rdfs:subClassOf rdf:resource="#Plates"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasIngridients"/>
        <owl:someValuesFrom>
          <owl:Class>
            <owl:intersectionOf rdf:parseType="Collection">
              <owl:Class rdf:about="#Chicken"/>
              <owl:Class rdf:about="#Onion"/>
            </owl:intersectionOf>
          </owl:Class>
        </owl:someValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#WhiteMeat">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Meat"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#Tomato">
    <rdfs:subClassOf>
      <owl:Class rdf:about="#Vegetable"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#RedMeat">
    <rdfs:subClassOf>
      <owl:Class rdf:about="#Meat"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#Vegetable">
    <rdfs:subClassOf rdf:resource="#Ingredients"/>
  </owl:Class>
  <owl:Class rdf:about="#Meat">
    <rdfs:subClassOf rdf:resource="#Ingredients"/>
  </owl:Class>
  <owl:ObjectProperty rdf:ID="hasChicken">
    <rdfs:subPropertyOf>
      <owl:ObjectProperty rdf:ID="hasWhiteMeat"/>
    </rdfs:subPropertyOf>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasMeat">
    <rdfs:subPropertyOf rdf:resource="#hasIngridients"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasVegetable">
    <rdfs:subPropertyOf rdf:resource="#hasIngridients"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasIngridients_26">
    <rdfs:subPropertyOf rdf:resource="#hasIngridients"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasOnion">
    <rdfs:subPropertyOf rdf:resource="#hasVegetable"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#hasWhiteMeat">
    <rdfs:subPropertyOf rdf:resource="#hasMeat"/>
  </owl:ObjectProperty>
</rdf:RDF>


But think that i understand why it cant work that way.

"but I think it's pretty likely that your classes are resources (URIs)" how
i know that?


2009/6/12 Stephane Corlosquet <scorlosquet@gmail.com>

> Hi Samuel,
>
> You cannot use  ?meatClass owl:Class "Pig" in your WHERE clause because it
> is not a valid pattern. You should follow the {subject property object}
> pattern in your WHERE clause. owl:Class is a class and not a property.
>
> Stephane.
>
>
> On Fri, Jun 12, 2009 at 3:52 PM, Samuel Pedro <samuelcpspam@gmail.com>wrote:
>
>> This is my owl file, i had to add labels to the classes, and do this:
>>
>> SELECT ?equivalentClass ?meatClass
>> WHERE {
>>  ?equivalentClass owl:equivalentClass ?meatClass .
>>  ?meatClass rdfs:label "Pig" . (in owl file i have Pig and Pig2)
>> }
>>
>> and why this query doesnt work, why it only works for labels? (I'm trying
>> to understand sparql but...)
>>
>> SELECT ?equivalentClass ?meatClass
>> WHERE {
>>  ?equivalentClass owl:equivalentClass ?meatClass .
>>   ?meatClass owl:Class "Pig" .
>> }
>>
>>
>>
>> 2009/6/12 Lee Feigenbaum <lee@thefigtrees.net>
>>
>> Samuel Pedro wrote:
>>>
>>>> Im trying to do this query...
>>>>
>>>> SELECT ?subject ?object
>>>> WHERE { ?subject owl:equivalenteClass ?object FILTER( ?object = "Meat")
>>>> }
>>>>
>>>> im trying to find the equivalente Class of meat, but it doesn't return
>>>> what i want, what am i doing wrong?
>>>>
>>>> if i do this...
>>>>
>>>> SELECT ?subject ?object
>>>> WHERE { ?subject owl:equivalenteClass ?object FILTER( ?object != "Meat")
>>>> }
>>>>
>>>> i get all the equivalent class that there is in the owl. why?
>>>>
>>>
>>> Without seeing your data, it's hard to say for sure, but I think it's
>>> pretty likely that your classes are resources (URIs) and "Meat" is just a
>>> label for the class. If this is right, you probably want a query similar to:
>>>
>>> SELECT ?equivalentClass ?meatClass
>>> WHERE {
>>>  ?equivalentClass owl:equivalentClass ?meatClass .
>>>  ?meatClass rdfs:label "Meat" .
>>> }
>>>
>>>
>>> The details will vary depending on what predicate is used to give a label
>>> to your classes (in my example I assume that it's rdfs:label). Also, note
>>> that the label needs to be exactly "Meat" for this to work.
>>>
>>> hope this helps,
>>> Lee
>>>
>>
>>
>>
>


-- 
--
Samuel Pedro
Received on Friday, 12 June 2009 15:35:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 12 June 2009 15:35:54 GMT