I took my working query which used FROM, removed the two FROMs, then tried both
of these variations.
Neither one produced any results.
I don't really have a way of putting together a small example without a lot of
work.
Are you sure it needs to be --set tdb:unionDefaultGraph=true, versus simply
--set tdb:unionDefaultGraph
The documentation was not clear about this.
<target name="tdb.query" >
<java classname="tdb.tdbquery" fork="true" >
<classpath refid="tdb.classpath" />
<arg value="--tdb=${assembler.file}" />
<arg value="--set=tdb:unionDefaultGraph=true" />
<arg value="--query=${query}" />
</java>
</target>
<target name="tdb.query" >
<java classname="tdb.tdbquery" fork="true" >
<classpath refid="tdb.classpath" />
<arg value="--tdb=${assembler.file}" />
<arg value="--set" />
<arg value="tdb:unionDefaultGraph=true" />
<arg value="--query=${query}" />
</java>
</target>
-----Original Message-----
From: Andy Seaborne [mailto:[email protected]] On Behalf Of Andy
Seaborne
Sent: Friday, September 23, 2011 5:50 AM
To: [email protected]
Subject: Re: query on several models in TDB
On 22/09/11 14:56, David Jordan wrote:
> I have my data in more than one model in TDB and I am trying to write a query
> that spans across them.
>
> I did try using the following FROM clause.
> FROM<urn:x-arq:UnionGraph>
> This worked, but there was a long delay in producing results (as compared to
> running against one named graph).
> So I am guessing that what took so long was that a union was literally being
> created before the query was executed.
> My hope was that this would just do the query across all the graphs in the
> database.
>
> Something else I am trying to get working is using the following in my Ant
> script that runs tdbquery.
> <target name="tdb.query">
> <java classname="tdb.tdbquery" fork="true">
> <classpath refid="tdb.classpath" />
> <arg value="--tdb=${assembler.file}" />
> <arg value="--set tdb:unionDefaultGraph=true" />
> <arg value="--query=${query}" />
> </java>
> </target>
>
> Executing 'C:\Program Files\Java\jdk1.6.0_21\jre\bin\java.exe' with arguments:
> '-classpath'
> 'C:\Documents and Settings\davjor\My
> Documents\Jena\TDB-0.8.11-SNAPSHOT\lib\arq-
> Documents\Jena\TDB-0.8.11-SNAPSHOT\lib\jena-2.6.4.jar;C:\Documents and
> Settings\ I cut this off, too long.
> b\tdb-0.8.11-SNAPSHOT.jar;C:\Documents and Settings\davjor\My
> Documents\Jena\TDB 'tdb.tdbquery'
> '--tdb=db.ttl'
> '--set tdb:unionDefaultGraph=true'
> '--query=query/haslungcancer.rq'
>
> The ' characters around the executable and arguments are not part of the
> command.
> Unknown argument: set tdb
This matters. It says the union flag is not getting set.
You don't need "FROM<urn:x-arq:UnionGraph>"
Because you have
'--set tdb:unionDefaultGraph=true'
it's all one string to the exec system call, starting with "--"
Both ":" and "=" are name/value split markers.
So the argument is called
"set tdb"
not "set"
Try:
'--set=tdb:unionDefaultGraph=true'
or (I think)
<arg value="--set" />
<arg value="tdb:unionDefaultGraph=true" />
i.e. two separate arguments to java execution.
TDB uses the usual command like style of
--flag value
as two arguments to the exec system call
--flag=value
as one argument to exec.
Andy
>
> The documentation was not clear at all whether there was a particular value
> to set unionDefaultGraph to. Is this correct?
> Also, any ideas why tdbquery is having a problem with the : ?
>
> I really want to avoid having a union computed up front of the graphs that I
> need.
> When I directly use named graphs in the query, things don’t work right when I
> use a variable spanning across multiple graphs.
>
> David Jordan
> Software Developer
> SAS Institute Inc.
> Health& Life Sciences, Research& Development Bldg R ▪ Office 4467
> 600 Research Drive ▪ Cary, NC 27513
> Tel: 919 531 1233 ▪ [email protected]<mailto:[email protected]>
> www.sas.com<http://www.sas.com>
> SAS® … THE POWER TO KNOW®
>
>
>