riya
riya

Reputation: 39

SPARQL : how to get values for a particular resource?

I am trying this query:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT  ?label
WHERE
{
   ?AGE rdfs:label ?label.
}

I need all the values of AGE from my model but instead this query is giving me other resources values which have the same property label .

For example I have connected the resource gender to have a property rdfs:label. So in my result I get both age values and gender values.

Can anybody tell me where am I wrong ?

Upvotes: 2

Views: 758

Answers (1)

scotthenninger
scotthenninger

Reputation: 4001

It seems you may be assigning some semantics to the variable '?AGE'. SPARQL is a graph pattern matching language and anything with a '?' as the first character is a variable - or better yet, an unknown in the graph pattern match. I.e., the following is an equivalent query to yours:

SPARQL ?label
WHERE
{   ?s rdfs:label ?label .
}

This will find all triples that have a rdfs:label property and select the value of ?label.

If you have a specific resource you want to query, then specify that resource in the subject, for example:

PREFIX ex: <http://example.org/ex>
SPARQL ?label
WHERE
{   ex:AGE rdfs:label ?label .
}

So understanding the difference between an unknown (denoted by '?' (or '$')) and a known (a qname or a full URI) is important to understand how SPARQL performs graph pattern matching.

Lots of SPARQL learning material on the Web, so a suggestion is to look into some of these to learn some basics.

Upvotes: 5

Related Questions