Re: Getting error while checking for model in a dataset in Jena 3

2020-01-15 Thread ajs6f
I'm a little confused. You say you are trying to use Jena 3, but that 
stacktrace features com.hp.hpl.jena.sdb package names, which are from Jena 2. 
Which one is executing this code? Are you bringing both on to the classpath 
together somehow?

ajs6f

> On Jan 15, 2020, at 7:09 AM, Ashwani Rathi  wrote:
> 
> Hi All,
> As discussed, I am trying to make changes in our java cod to migrate from 
> jena 2 to jena 3
> 
>private Model getModelFromRDFStore(String modelName, java.sql.Connection 
> conn)
>{
>   org.apache.jena.sdb.StoreDesc storeDesc = new 
> org.apache.jena.sdb.StoreDesc(org.apache.jena.sdb.store.LayoutType.LayoutTripleNodesIndex,
>   org.apache.jena.sdb.store.DatabaseType.Oracle) ;
>   org.apache.jena.sdb.Store store = null;
>   try {
>   store = 
> org.apache.jena.sdb.SDBFactory.connectStore(conn, storeDesc);
>   if(!StoreUtils.isFormatted(store))
>   {
>   store.getTableFormatter().create();
>   }
>   } catch (java.sql.SQLException e) {
>   e.printStackTrace();
>   }
>   org.apache.jena.query.Dataset dataset = 
> org.apache.jena.sdb.SDBFactory.connectDataset(store);
>   Model model = null;
>   if (!dataset.containsNamedModel(modelName)) {
>   model = dataset.getDefaultModel();
>   dataset.addNamedModel(modelName, model);
>   }
>   else {
>   model = dataset.getNamedModel(modelName);
>   }
> 
>   store.getConnection().close();
>   store.close();
>   System.out.println("### RETURNING model = " + 
> model);
>   return model;
>}
> 
> But I am getting the following issues
> 
> 1) While printing the model (System.out.println("### RETURNING 
> model = " + model);), I am getting the following SQLException:
> 
>   
>   <<[Thread 
> - [ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default 
> (self-tuning)' ]null.null> com.hp.hpl.jena.sdb.sql.SDBExceptionSQL: 
> SQLException in executing SQL statement
>   at com.hp.hpl.jena.sdb.compiler.SDB_QC.exec(SDB_QC.java:84)
>   at com.hp.hpl.jena.sdb.compiler.OpSQL.exec(OpSQL.java:65)
>   at 
> com.hp.hpl.jena.sdb.engine.QueryEngineSDB.eval(QueryEngineSDB.java:154)
>   at 
> com.hp.hpl.jena.sparql.engine.QueryEngineBase.evaluate(QueryEngineBase.java:137)
>   at 
> com.hp.hpl.jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.java:107)
>   at 
> com.hp.hpl.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java:88)
>   at 
> com.hp.hpl.jena.sdb.engine.QueryEngineSDB$QueryEngineFactorySDB.create(QueryEngineSDB.java:198)
>   at com.hp.hpl.jena.sdb.graph.GraphSDB.graphBaseFind(GraphSDB.java:169)
>   at com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:277)
>   at com.hp.hpl.jena.graph.GraphUtil.findAll(GraphUtil.java:123)
>   at com.hp.hpl.jena.graph.impl.GraphBase.toString(GraphBase.java:436)
>   at com.hp.hpl.jena.graph.impl.GraphBase.toString(GraphBase.java:411)
>   at java.lang.String.valueOf(String.java:2981)
>   at java.lang.StringBuilder.append(StringBuilder.java:131)
>   at com.hp.hpl.jena.rdf.model.impl.ModelCom.toString(ModelCom.java:1506)
>   at java.lang.String.valueOf(String.java:2981)
>   at java.lang.StringBuilder.append(StringBuilder.java:131)
> 
> 2) We are fetching model data from database, but I am not getting any details 
> in the fetched model object. Is something missing in this logic?
> 
> Regards,
> Ashwani
> 
> On 10/01/20, 4:14 PM, "Andy Seaborne"  wrote:
> 
>Probably has not been formatted:
> 
> 
> 
>
> https://urldefense.proofpoint.com/v2/url?u=http-3A__jena.apache.org_documentation_sdb_javaapi.html-23formatting-2Dor-2Demptying-2Dthe-2Dstore=DwIDaQ=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE=ld8gXdwUlVansMT0flGoGNN0AOkhQba_hAJM5PewJCA=xMdWwv3NfQf8eKJO6IDGzidz0u7zt4EiZ0x6jeuB5WI=2bL8SFjE2-I7Ooz_b_k_V2x6t7R7hn50CNfPrVbF99A=
>  
> 
> 
> 
> 
> 
>On 10/01/2020 02:20, Ashwani Rathi wrote:
> 
>> Hi All,
> 
>> As discussed, I am trying to migrate from Jena 2 to Jena 3. As part of that 
>> we are trying to eliminate usage of com.hp.hpl.jena.db.IDBConnection and 
>> rather use org.apache.jena.sdb.sql.SDBConnection
> 
>> Following is the method that we have written to get 
>> org.apache.jena.rdf.model.Model object from database
> 
>> 
> 
>> private Model getModelFromRDFStore(String modelName, java.sql.Connection 
>> conn)
> 
>> {
> 
>>  org.apache.jena.sdb.StoreDesc storeDesc = new 
>> org.apache.jena.sdb.StoreDesc(org.apache.jena.sdb.store.LayoutType.LayoutTripleNodesIndex,
> 
>>  org.apache.jena.sdb.store.DatabaseType.Oracle) ;
> 
>>  

Re: Getting error while checking for model in a dataset in Jena 3

2020-01-15 Thread Ashwani Rathi
Hi All,
As discussed, I am trying to make changes in our java cod to migrate from jena 
2 to jena 3

private Model getModelFromRDFStore(String modelName, java.sql.Connection 
conn)
{
org.apache.jena.sdb.StoreDesc storeDesc = new 
org.apache.jena.sdb.StoreDesc(org.apache.jena.sdb.store.LayoutType.LayoutTripleNodesIndex,
org.apache.jena.sdb.store.DatabaseType.Oracle) ;
org.apache.jena.sdb.Store store = null;
try {
store = 
org.apache.jena.sdb.SDBFactory.connectStore(conn, storeDesc);
if(!StoreUtils.isFormatted(store))
{
store.getTableFormatter().create();
}
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
org.apache.jena.query.Dataset dataset = 
org.apache.jena.sdb.SDBFactory.connectDataset(store);
Model model = null;
if (!dataset.containsNamedModel(modelName)) {
model = dataset.getDefaultModel();
dataset.addNamedModel(modelName, model);
}
else {
model = dataset.getNamedModel(modelName);
}

store.getConnection().close();
store.close();
System.out.println("### RETURNING model = " + 
model);
return model;
}

But I am getting the following issues

1) While printing the model (System.out.println("### RETURNING 
model = " + model);), I am getting the following SQLException:

  
  <<[Thread - 
[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' 
]null.null> com.hp.hpl.jena.sdb.sql.SDBExceptionSQL: SQLException in executing 
SQL statement
at com.hp.hpl.jena.sdb.compiler.SDB_QC.exec(SDB_QC.java:84)
at com.hp.hpl.jena.sdb.compiler.OpSQL.exec(OpSQL.java:65)
at 
com.hp.hpl.jena.sdb.engine.QueryEngineSDB.eval(QueryEngineSDB.java:154)
at 
com.hp.hpl.jena.sparql.engine.QueryEngineBase.evaluate(QueryEngineBase.java:137)
at 
com.hp.hpl.jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.java:107)
at 
com.hp.hpl.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java:88)
at 
com.hp.hpl.jena.sdb.engine.QueryEngineSDB$QueryEngineFactorySDB.create(QueryEngineSDB.java:198)
at com.hp.hpl.jena.sdb.graph.GraphSDB.graphBaseFind(GraphSDB.java:169)
at com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:277)
at com.hp.hpl.jena.graph.GraphUtil.findAll(GraphUtil.java:123)
at com.hp.hpl.jena.graph.impl.GraphBase.toString(GraphBase.java:436)
at com.hp.hpl.jena.graph.impl.GraphBase.toString(GraphBase.java:411)
at java.lang.String.valueOf(String.java:2981)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.toString(ModelCom.java:1506)
at java.lang.String.valueOf(String.java:2981)
at java.lang.StringBuilder.append(StringBuilder.java:131)

2) We are fetching model data from database, but I am not getting any details 
in the fetched model object. Is something missing in this logic?

Regards,
Ashwani

On 10/01/20, 4:14 PM, "Andy Seaborne"  wrote:

Probably has not been formatted:




https://urldefense.proofpoint.com/v2/url?u=http-3A__jena.apache.org_documentation_sdb_javaapi.html-23formatting-2Dor-2Demptying-2Dthe-2Dstore=DwIDaQ=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE=ld8gXdwUlVansMT0flGoGNN0AOkhQba_hAJM5PewJCA=xMdWwv3NfQf8eKJO6IDGzidz0u7zt4EiZ0x6jeuB5WI=2bL8SFjE2-I7Ooz_b_k_V2x6t7R7hn50CNfPrVbF99A=
 





On 10/01/2020 02:20, Ashwani Rathi wrote:

> Hi All,

> As discussed, I am trying to migrate from Jena 2 to Jena 3. As part of 
that we are trying to eliminate usage of com.hp.hpl.jena.db.IDBConnection and 
rather use org.apache.jena.sdb.sql.SDBConnection

> Following is the method that we have written to get 
org.apache.jena.rdf.model.Model object from database

> 

>  private Model getModelFromRDFStore(String modelName, 
java.sql.Connection conn)

>  {

>   org.apache.jena.sdb.StoreDesc storeDesc = new 
org.apache.jena.sdb.StoreDesc(org.apache.jena.sdb.store.LayoutType.LayoutTripleNodesIndex,

>   org.apache.jena.sdb.store.DatabaseType.Oracle) ;

>   org.apache.jena.sdb.Store store = null;

>   try {

>   store = 
org.apache.jena.sdb.SDBFactory.connectStore(conn, storeDesc);

>   } catch (java.sql.SQLException e) {

>   e.printStackTrace();

>   }

>   org.apache.jena.query.Dataset 

Re: Getting error while checking for model in a dataset in Jena 3

2020-01-10 Thread Andy Seaborne

Probably has not been formatted:

http://jena.apache.org/documentation/sdb/javaapi.html#formatting-or-emptying-the-store


On 10/01/2020 02:20, Ashwani Rathi wrote:

Hi All,
As discussed, I am trying to migrate from Jena 2 to Jena 3. As part of that we 
are trying to eliminate usage of com.hp.hpl.jena.db.IDBConnection and rather 
use org.apache.jena.sdb.sql.SDBConnection
Following is the method that we have written to get 
org.apache.jena.rdf.model.Model object from database

 private Model getModelFromRDFStore(String modelName, java.sql.Connection 
conn)
 {
org.apache.jena.sdb.StoreDesc storeDesc = new 
org.apache.jena.sdb.StoreDesc(org.apache.jena.sdb.store.LayoutType.LayoutTripleNodesIndex,
org.apache.jena.sdb.store.DatabaseType.Oracle) ;
org.apache.jena.sdb.Store store = null;
try {
store = 
org.apache.jena.sdb.SDBFactory.connectStore(conn, storeDesc);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
org.apache.jena.query.Dataset dataset = 
org.apache.jena.sdb.SDBFactory.connectDataset(store);
Model model = null;
if (!dataset.containsNamedModel(modelName)) {
model = dataset.getDefaultModel();
dataset.addNamedModel(modelName, model);
}
else {
model = dataset.getNamedModel(modelName);
}
return model;
 }

But while checking for model in a dataset -> 
(!dataset.containsNamedModel(modelName)), we are getting the following error:
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not 
exist

Attached is the detailed exception. From the log it seems that some tables like 
Nodes N_1,  Quads Q_1 , Nodes R_1, Nodes R_2 are missing.
So can anyone please tell what all tables (with columns) should we create to 
fix this issue?

Regards,
Ashwani



On 09/01/20, 8:07 PM, "Andy Seaborne"  wrote:

 Hi Ashwani,
 
 What are you trying to achieve overall?
 
 Is it to port an existing application/system from Jena 2.6 to Jena

 3.current?
 Or is it create a general adaptor for Jena to Oracle Spatial RDF?
 
 The answers to your questions are different depending on use case.
 
 If it is the latter, then going down the SDB route may lead to a whole host

 of problems because SDB is not deeply integrated into Jena anymore.  For
 example: transactions (and integration with Fuseki will be hard), newer
 APIs like RDFConnection. You want to implement DatasetGraph and
 Transactional. I doubt the database framework DBOE helps much but it is
 worth checking that to see if it will save you work.
 
 If it is a one-off conversion for a specific application,  things are

 simpler because it's getting something to work for one, known case rather
 arbitrary application use cases in the future and as Jena evolves.
 
 Re: SDBConnection
 
 SDBConnection does not control the table naming. That's in the "FmtLayout"

 classes.
 
 Re:LayoutType
 
 See the source code.

 SDB uses one of three fixed table layouts. layout1 (really, *really* don't
 use), layout2/index and layout2/hash.
 
 The SPARQL to SQL code generation is specific to the layout.
 
 
 On Thu, 9 Jan 2020 at 12:24, Ashwani Rathi  wrote:
 
 > Thanks for the reply.

 >
 > Also in jena 2, we can set TableNamePrefix on an IDBConnection with the
 > following statements:
 >
 > IDBConnection conn = null;
 > IRDBDriver driver = conn.getDriver();
 > driver.setTableNamePrefix("prefix");
 >
 > So what actually does this achieve. And how can we achieve the same
 > functionality in jena 3 with org.apache.jena.sdb.sql.SDBConnection class?
 >
 > Regards,
 > Ashwani
 >
 > On 09/01/20, 2:15 PM, "Bögershausen, Merlin Michael" <
 > merlin.boegershau...@rwth-aachen.de> wrote:
 >
 > Hi,
 >
 > You can check whether the dataset contains a specific named model 
with
 > dataset.containesNamedModel() [1]
 >
 >
 >
 > Best Merlin
 >
 >
 >
 > [1]
 > 
https://urldefense.proofpoint.com/v2/url?u=https-3A__jena.apache.org_documentation_javadoc_arq_org_apache_jena_query_Dataset.html-23containsNamedModel-2Djava.lang.String-2D=DwIGaQ=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE=ld8gXdwUlVansMT0flGoGNN0AOkhQba_hAJM5PewJCA=_5kPj72-EHVEVxkEWZfp9umEDalFfeUoHIdfCCb9Plo=HB2xzUCShqe8JzEhH_9HaUktJ5rnUU2XOCqrcL6wOe8=
 >
 >
 >
 >
 >
 > Am 09.01.2020 06:59 schrieb Ashwani Rathi :
 >
 > Hi All,
 >
 > We are upgrading from jena 2 to jena 3.
 >
 >