- From: David Booth <david@dbooth.org>
- Date: Wed, 2 Mar 2016 09:51:30 -0500
- To: 王涛 <wonder232627@gmail.com>, semantic-web@w3.org
On 03/01/2016 10:27 PM, 王涛 wrote:
>> Hello ,]I'm a tiro on studying in Sparql 1.1 which is the standard
>> language of RDF. In my survey ,we can do some join like
>> equal-join,left-outer-join,because the sparql can support the operator
>> equality ,as well as inequality. However,it also support the operator
>> like greater or less.So my question is that can we use the operator of
>> greater or less in the sparql query between two variables,
>> namely,theta-join. I saw some research claimed that they do the
>> thetajoin on large graph on the cloud,but I did't see some sparql
>> queries contained theta-join, neither in the sparql1.1. So,can you
>> give me some explain what's the problem and can we use thetajoin like
>> the following examples.
>> select ?ename ?grade where {
>> ?emp rdf:type f:emp;
>> foaf:surname ?ename;
>> f:Sal ?sal.
>> ?salgrade rdf:type f:salgrade;
>> f:LoSal ?low;
>> f:HiSal ?high;
>> f:Grade ?grade.
>> FILTER (?sal >= ?low && ?sal <= ?high)
>> }
>> Looking forward to your reply,thank you .
That query worked fine for me when I tested it, after adding namespace
prefixes:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX f: <http://example/f#>
PREFIX : <http://example/>
select ?ename ?grade where {
?emp rdf:type f:emp;
foaf:surname ?ename;
f:Sal ?sal.
?salgrade rdf:type f:salgrade;
f:LoSal ?low;
f:HiSal ?high;
f:Grade ?grade.
FILTER (?sal >= ?low && ?sal <= ?high)
}
I tried it on the following test data:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX f: <http://example/f#>
PREFIX : <http://example/>
:joe rdf:type f:emp ;
foaf:surname "Joe" ;
f:Sal 500 .
:sally rdf:type f:emp ;
foaf:surname "Sally" ;
f:Sal 600 .
:midGrade rdf:type f:salgrade ;
f:LoSal 300 ;
f:HiSal 900 ;
f:Grade "Mid" .
:highGrade rdf:type f:salgrade ;
f:LoSal 500 ;
f:HiSal 1200 ;
f:Grade "High" .
And it produced the following result as expected:
?ename ?grade
Joe Mid
Sally Mid
Joe High
Sally High
I hope that helps.
David Booth
Received on Wednesday, 2 March 2016 14:51:58 UTC