On 23/09/11 13:57, David Jordan wrote:

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.

Is that because if you have one triple in each dataset it works?

What is needed is data + query + configuration details.

It is the details that matter which is why I hoped to recreate a setup that was sufficiently like you installation and exhibited the problems.

Are you sure it needs to be --set tdb:unionDefaultGraph=true, versus simply 
--set tdb:unionDefaultGraph

TDB.getContext().set(TDB.symUnionDefaultGraph, true) ;

is the same as command line:

--set tdb:unionDefaultGraph=true

or

--set=tdb:unionDefaultGraph=true

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}" />

Could you share the assembler file?

Which version of TDB are you using?

        Andy

                        <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®






Reply via email to