In this section, we look at a simple first query and show how to execute it with Jena.
A “hello world” of queries
The file “q1.rq” contains the following query:
SELECT ?x
WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> "John Smith" }
executing that query with the command line query application;
---------------------------------
| x |
=================================
| <http://somewhere/JohnSmith/> |
---------------------------------
This works by matching the triple pattern in the WHERE
clause
against the triples in the RDF graph. The predicate and object of
the triple are fixed values so the pattern is going to match only
triples with those values. The subject is a variable, and there are
no other restrictions on the variable. The pattern matches any
triples with these predicate and object values, and it matches with
solutions for x
.
The item enclosed in <\>
is a URI (actually, it’s an IRI) and the
item enclosed in "" is a plain literal. Just like Turtle, N3 or
N-triples, typed literals are written with ^^ and language tags
can be added with @.
?x
is a variable called x. The ? does not form part of the name
which is why it does not appear in the table output.
There is one match. The query returns the match in the x
query
variable. The output shown was obtained by using one of ARQ’s
command line applications.
Executing the query
There are helper scripts in the Jena distribution bat/
and
bin/
directories. You should check these scripts before use. They can be placed on the shell
command path.
Windows setup
Execute:
> bat\sparql.bat --data=doc\Tutorial\vc-db-1.rdf --query=doc\Tutorial\q1.rq
You can just put the bat/
directory on your classpath or copy the
programs out of it.
bash scripts for Linux/Cygwin/Unix
Execute:
$ bin/sparql --data=doc/Tutorial/vc-db-1.rdf --query=doc/Tutorial/q1.rq
Using the Java command line applications directly
(This is not necessary.)
You will need to set the classpath to include all the jar files
in the Jena distribution lib/
directory.
$ java -cp 'DIST/lib/*' arq.sparql ...
where DIST
is the apache-jena-VERSION
directory.