On 11/02/16 18:56, Bangalore Akhilesh wrote:
Hi Andy,

I have no idea but after dropping & recreating the tables in the database,
it started working.

Nevertheless, I feel this can resurface. I shall let you know if I can
reproduce it again.

If you can reproduce outside of Fuseki that would be particularly useful because it is one less layer of complexity.

There is now an "sdbupdate" tool to execute SPARQL Updates on an SDB database (written to work on this issue :-)

Can you please let me know when is 3.1 scheduled for release?

We don't run to set dates - as volunteers who find time when we can, that's unrealistic.

Usually we release about every 6 months which would be June-ish.

        Andy


Thanks,
Akhilesh

On Thu, Feb 11, 2016 at 11:56 PM, Bangalore Akhilesh <
[email protected]> wrote:

Hi Andy,

I tried the latest snapshots of Fuseki & SDB - 48 & 49 respectively - as
per your advice. Unfortunately, SDB seems broken. I encounter an error for
any operation - update or query!

Below is the log when I tried to insert a triple:

*** Start of log ***

[2016-02-11 23:45:41] Fuseki     INFO  [9] POST /oracle :: 'update' ::
[application/x-www-form-urlencoded charset=UTF-8] ?
[2016-02-11 23:45:42] SDBConnection WARN  execUpdate: SQLException
ORA-06550: line 1, column 18:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 1, column 7:
PL/SQL: SQL Statement ignored
ORA-06550: line 4, column 27:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 2, column 1:
PL/SQL: SQL Statement ignored

BEGIN LOCK TABLE Nodes IN EXCLUSIVE MODE;
INSERT INTO Nodes (hash, lex, lang, datatype, type)
SELECT NNodeQuads.n0 , NNodeQuads.n1 , NNodeQuads.n2 , NNodeQuads.n3 ,
NNodeQuads.n4
FROM NNodeQuads LEFT JOIN Nodes ON (NNodeQuads.n0=Nodes.hash)
WHERE Nodes.hash IS NULL;
END;

[2016-02-11 23:45:42] LoaderTuplesNodes ERROR Error in thread: Exception
flushing
org.apache.jena.sdb.SDBException: Exception flushing
         at
org.apache.jena.sdb.layout2.TupleLoaderBase.flush(TupleLoaderBase.java:235)
         at
org.apache.jena.sdb.layout2.TupleLoaderBase.finish(TupleLoaderBase.java:170)
         at
org.apache.jena.sdb.layout2.LoaderTuplesNodes.commitTuples(LoaderTuplesNodes.java:305)
         at
org.apache.jena.sdb.layout2.LoaderTuplesNodes.access$100(LoaderTuplesNodes.java:42)
         at
org.apache.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:345)
         at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: ORA-06550: line 1, column 18:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 1, column 7:
PL/SQL: SQL Statement ignored
ORA-06550: line 4, column 27:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 2, column 1:
PL/SQL: SQL Statement ignored

         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
         at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
         at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
         at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
         at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
         at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194)
         at
oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1000)
         at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
         at
oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1814)
         at
oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1779)
         at
oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:277)
         at
org.apache.jena.sdb.sql.SDBConnection.execUpdate(SDBConnection.java:160)
         at
org.apache.jena.sdb.layout2.TupleLoaderBase.flush(TupleLoaderBase.java:217)
         ... 5 more
org.apache.jena.sdb.SDBException: Exception flushing
         at
org.apache.jena.sdb.layout2.TupleLoaderBase.flush(TupleLoaderBase.java:235)
         at
org.apache.jena.sdb.layout2.TupleLoaderBase.finish(TupleLoaderBase.java:170)
         at
org.apache.jena.sdb.layout2.LoaderTuplesNodes.commitTuples(LoaderTuplesNodes.java:305)
         at
org.apache.jena.sdb.layout2.LoaderTuplesNodes.access$100(LoaderTuplesNodes.java:42)
         at
org.apache.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:345)
         at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: ORA-06550: line 1, column 18:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 1, column 7:
PL/SQL: SQL Statement ignored
ORA-06550: line 4, column 27:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 2, column 1:
PL/SQL: SQL Statement ignored

         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
         at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
         at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
         at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
         at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
         at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194)
         at
oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1000)
         at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
         at
oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1814)
         at
oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1779)
         at
oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:277)
         at
org.apache.jena.sdb.sql.SDBConnection.execUpdate(SDBConnection.java:160)
         at
org.apache.jena.sdb.layout2.TupleLoaderBase.flush(TupleLoaderBase.java:217)
         ... 5 more
[2016-02-11 23:45:43] Fuseki     INFO  [9] 500 Exception flushing (1.265 s)

*** End of log ***


Thanks,
Akhilesh


On Mon, Feb 8, 2016 at 7:19 PM, Andy Seaborne <[email protected]> wrote:

Hi Akhilesh,

I reduced your setup to something outside Fuseki:insert some data

  * check it is as expected
  * DROP GRAPH
  * check it is not there


     public static void main(String ... a) {
         sdb.sdbtruncate.main("--sdb=sdb.ttl", "--confirm") ;
         sdb.sdbupdate.main("--sdb=sdb.ttl", "INSERT DATA {  GRAPH <x:gx>
{ <x:sx> <x:px> <x:ox> } }");
         sdb.sdbquery.main("--sdb=sdb.ttl", "SELECT * { { GRAPH ?g { ?s ?p
?o } } UNION {  ?s ?p ?o } }");
         sdb.sdbdump.main("--sdb=sdb.ttl");
         sdb.sdbupdate.main("--sdb=sdb.ttl", "DROP GRAPH <x:gx>") ;
         sdb.sdbquery.main("--sdb=sdb.ttl", "SELECT * { { GRAPH ?g { ?s ?p
?o } } UNION {  ?s ?p ?o } }");
     }

(sdbupdate is new, not in 3.0.1)

or the same run as command scripts from the command line.

The same via Fuseki would also illustrate the problem but it's easier to
debug outside Fuseki.

JENA-1132 <https://issues.apache.org/jira/browse/JENA-1132>

It turns out that it got fixed (or rather rewritten out of existence) as
part of wider changes from ARQ.

So please give the snapshot build a try [*]

     Thanks
     Andy

[*]

https://repository.apache.org/content/repositories/snapshots/org/apache/jena/apache-jena-fuseki/
build 46 or later.

On 08/02/16 12:17, Bangalore Akhilesh wrote:

Hi Andy,

Sorry the examples got damaged. Please find them below along with other
details.

I had built the source from git tagged at jena-3.0.1-rc1.

The versions and other environment details are:

     1. Jena - 3.0.1
     2. Fuseki - 2.3.1
     3. SDB - 3.0.1
     4. OS - Windows 7 + Oracle Linux 6
     5. Web app server - Tomcat 8 on Windows 7
     6. Database server - Oralce 11g on Oracle Linux 6

*Note*: The problem was reproduced even when SDB is configured to connect
to MySQL as well!


     1. *Fuseki configuration* (place under *C:\etc\fuseki* or
*/etc/fuseki*)

     @prefix : <#> .

     @prefix fuseki: <http://jena.apache.org/fuseki#> .

     @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

     @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

     @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .



     [] rdf:type fuseki:Server ;

     # ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "30000" ]
;

     ja:loadClass "org.apache.jena.sdb.SDB" ;

     .


     2. *SDB configuration* (place under *C:\etc\fuseki\configuration* or
     */etc/fuseki/configuration*)

     *(a) For Oracle*


     @prefix : <#> .
     @prefix fuseki: <http://jena.apache.org/fuseki#> .
     @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
     @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
     @prefix sdb: <http://jena.hpl.hp.com/2007/sdb#> .
     @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .

     :service_sdb_all rdf:type fuseki:Service ;
     rdfs:label "SDB - Oracle" ;
     fuseki:name "oracle" ;
     fuseki:serviceQuery "query", "sparql" ;
     fuseki:serviceUpdate "update" ;
     fuseki:serviceUpload "upload" ;
     fuseki:serviceReadWriteGraphStore "data" ;
     fuseki:serviceReadGraphStore "get" ;
     fuseki:dataset :sdb_dataset_readwrite ;
     .

     :sdb_dataset_readwrite rdf:type sdb:DatasetStore ;
     sdb:store :rdbms_datastore

     .

     :rdbms_datastore rdf:type sdb:Store ;
     sdb:layout "layout2" ;
     sdb:connection :oracle_data_conn ;
     .

     :oracle_data_conn rdf:type sdb:SDBConnection ;
     sdb:sdbType "oracle" ;
     sdb:driver "oracle.jdbc.driver.OracleDriver" ;
     sdb:jdbcURL "jdbc:oracle:thin:@localhost:1521/xe" ;
     sdb:sdbUser "username" ;
     sdb:sdbPassword "password" ;
     . (b) For MySQL * @prefix : <#> . @prefix fuseki:
     <http://jena.apache.org/fuseki# <http://jena.apache.org/fuseki#>> .
@prefix
     rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#
     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>> . @prefix rdfs:
     <http://www.w3.org/2000/01/rdf-schema#
     <http://www.w3.org/2000/01/rdf-schema#>> . @prefix sdb:
     <http://jena.hpl.hp.com/2007/sdb# <http://jena.hpl.hp.com/2007/sdb#>>
.
     @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#
     <http://jena.hpl.hp.com/2005/11/Assembler#>> . :service_sdb_all
rdf:type
     fuseki:Service ; rdfs:label "SDB - MySQL" ; fuseki:name "mysql" ;
     fuseki:serviceQuery "query", "sparql" ; fuseki:serviceUpdate
"update" ;
     fuseki:serviceUpload "upload" ; fuseki:serviceReadWriteGraphStore
"data" ;
     fuseki:serviceReadGraphStore "get" ; fuseki:dataset
:sdb_dataset_readwrite
     ; . :sdb_dataset_readwrite rdf:type sdb:DatasetStore ; sdb:store
     :rdbms_datastore . :rdbms_datastore rdf:type sdb:Store ; sdb:layout
     "layout2" ; sdb:connection :mysql_data_conn ; sdb:engine "MyISAM" ; .
     :mysql_data_conn rdf:type sdb:SDBConnection ; sdb:sdbType "MySQL" ;
     sdb:jdbcURL "jdbc:mysql://localhost:3306/triplestore" ; sdb:driver
     "com.mysql.jdbc.Driver" ; sdb:sdbUser "user" ; sdb:sdbPassword
"password" ;
     . *
     3. *Steps Followed*

     I have created fuseki.war after including the ojdbc6.jar (or)
     mysql-connector-java-5.0.8-bin.jar & jena-sdb.3.0.1.jar in the lib
folder
     and deployed it on Tomcat 8.

     *Step 1:*

     On successful deploy, I had accessed Fuseki's UI for executing
queries
     and created a named graph with a triple by accessing the sparql
update end
     point http://localhost:8080/fuseki/oracle/update

     insert data{ graph <urn:providers:search:google>{ <
http://www.google.com>
     <http://www.google.com#tab> <http://www.google.com/images> . } }

     *Step 2:*

     Then I executed the below query against sparql query end point
     http://localhost:8080/fuseki/oracle/query

     select ?g ?s ?p ?o { graph ?g { ?s ?p ?o } }

     This returned the triple which was inserted in Step 1.

     *Step 3:*

     I had again accessed the sparql update end point. This time to
execute
     the query to drop the named graph.

     drop graph <urn:providers:search:google>

     This returned a success status code.


     *Step 4:*

     I then again executed the query from Step 2. The named graph and the
     triple still persisted!

     *Step 5:*


     I then tried the query to delete all the triples in the named graph
     against the sparql update end point.

     with <urn:providers:search:google> delete {?s ?p ?o} where {?s ?p ?o}

     This deleted the triples along with the graph!


Thanks,
Akhilesh


On Thu, Feb 4, 2016 at 8:06 PM, Andy Seaborne <[email protected]> wrote:

Akhilesh,

Please can you provide a complete, minimal example including the Fuseki
configuration together with details of your environment (version
numbers of
Jena/Fuseki/SDB, OS, webapp server, etc.)

There are too many unknowns here at the moment to accurate recreate the
situation.

Your examples below seem to have got damaged in email.  A pastebin might
be safer.


          Andy

PS I don't have an Oracle instance for testing - I have MySQL, H2, HSQL,
or Apache Derby.


On 04/02/16 08:30, Bangalore Akhilesh wrote:

Hi Rob,

The response remained the same even with DROP GRAPH <iri>.

Below are the sequence of requests that were issued:

Step 1:



Request

Response

POST http://localhost:8080/fuseki/oracle/update

Accept: application/sparql-results+json

Content-Type: application/sparql-update



insert data{

    graph <urn:providers:search:google>{

       <http://www.google.com>

       <http://www.google.com#tab>

       <http://www.google.com/images>

     }

}



Status 204 No Content





Step 2:



Request

Response

POST http://localhost:8080/fuseki/oracle/query

Accept: application/sparql-results+json

Content-Type: application/sparql-query



select ?g ?s ?p ?o

{

     graph ?g

     {

       ?s ?p ?o

     }

}



Status 200 OK



{

     "head": {

       "vars": [

         "g",

         "s",

         "p",

         "o"

       ]

     },

     "results": {

       "bindings": [

         {

           "g": {

             "type": "uri",

             "value": "urn:providers:search:google"

           },

           "s": {

             "type": "uri",

             "value": "http://www.google.com";

           },

           "p": {

             "type": "uri",

             "value": "http://www.google.com#tab";

           },

           "o": {

             "type": "uri",

             "value": "http://www.google.com/images";

           }

         }

       ]

     }

}





Step 3:



Request

Response

POST http://localhost:8080/fuseki/oracle/update

Accept: application/sparql-results+json

Content-Type: application/sparql-update



drop graph <urn:providers:search:google>



Status 204 No Content





Step 4:



Request

Response

POST http://localhost:8080/fuseki/oracle/query

Accept: application/sparql-results+json

Content-Type: application/sparql-query



select ?g ?s ?p ?o

{

     graph ?g

     {

       ?s ?p ?o

     }

}



Status 200 OK



{

     "head": {

       "vars": [

         "g",

         "s",

         "p",

         "o"

       ]

     },

     "results": {

       "bindings": [

         {

           "g": {

             "type": "uri",

             "value": "urn:providers:search:google"

           },

           "s": {

             "type": "uri",

             "value": "http://www.google.com";

           },

           "p": {

             "type": "uri",

             "value": "http://www.google.com#tab";

           },

           "o": {

             "type": "uri",

             "value": "http://www.google.com/images";

           }

         }

       ]

     }

}

As you can see, the graph is still available!

I have also tried the below request but the graph still remained.

Request

Response

DELETE


http://localhost:8080/fuseki/oracle/graph?graph=urn:providers:search:google



Status 204 No Content



Thanks,
Akhilesh

On Tue, Feb 2, 2016 at 7:03 PM, Rob Vesse <[email protected]>
wrote:

How do you verify that the graph is still present?

Also what happens if you run DROP GRAPH <iri>?

The SILENT keyword allows for an operation to fail but to ignore the
failure and return success so if something is going wrong removing the
SILENT keyword allows for the error to be propagated.

Rob

On 02/02/2016 12:59, "Bangalore Akhilesh" <
[email protected]>
wrote:

Hi All,

I had setup Fuseki with SDB to work against Oracle.

Today, I had observed that the command *DROP SILENT GRAPH <GRAPH
IRI>*
returned a success code but the graph & the triples remained in the
database.

Can anyone please help me out to address this problem?

Thanks,
Akhilesh











Reply via email to