Stephane Corlosquet wrote:
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.

This is, strictly speaking, not entirely correct. Syntactically

     ?meatClass owl:Class "Pig" .

is totally fine. But, as Lee already mentioned and Steph probably tried to make clearer, we'd need to know your data/schema, i.e. what property carry the "Pig" label in order to help you.

Can you post some example graph on which you want to pose that query?

Axel

On Fri, Jun 12, 2009 at 3:52 PM, Samuel Pedro <[email protected] <mailto:[email protected]>> 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 <[email protected]
    <mailto:[email protected]>>

        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






--
Dr. Axel Polleres
Digital Enterprise Research Institute, National University of Ireland, Galway
email: [email protected]  url: http://www.polleres.net/

Reply via email to