Jena SDB Lire le fichier dans le modèle
-
21-12-2019 - |
Question
J'ai le problème suivant:
Lorsque j'essaie de charger le contenu d'un fichier dans mon modèle, il jette une exception, je ne sais pas pourquoi cela est lancé et il offre un énorme bloc de SQL avec des défaillances de la syntaxe. Quelqu'un pourrait-il m'aider avec ça?
J'ai vérifié la connexion JDBC, mais cela semble être correct. J'utilise 1.3.5 Jena SDB en combinaison avec la lecture 2.2.0.Le modèle doit ensuite être persisté à la base de données H2 avec mode="mysql" de jeu.
Le code qui jette l'exception:
ds = SDBFactory.connectDataset(store);
Logger.debug("load default model");
model = ds.getDefaultModel();
Logger.debug("Loaded model");
FileManager.get().readModel(
model,
new File(rdfFile.getParentFile().getCanonicalPath()
.concat("/dataversions/" + datasetName)
+ ".txt").getCanonicalPath(), "N-TRIPLES");
Logger.debug("Filemanager loaded file into model...");
et l'exception qui est lancée:
[debug] application - Create the new Dataset: test
[debug] application - load default model
[debug] application - Loaded model
[error] c.h.h.j.s.l.LoaderTuplesNodes - Error in thread: Problem making new tupleloader
com.hp.hpl.jena.sdb.SDBException: Problem making new tupleloader
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:292) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
Caused by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:288) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
Caused by: com.hp.hpl.jena.sdb.SDBException: Problem initialising loader for [Triples]
at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.<init>(TupleLoaderBase.java:59) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashBase.<init>(TupleLoaderHashBase.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashMySQL.<init>(TupleLoaderHashMySQL.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
Caused by: org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; erwartet "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"
Syntax error in SQL statement "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; expected "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL statement:
CREATE TEMPORARY TABLE NNodeTriples
(n0 BIGINT ,
n1 LONGTEXT BINARY CHARACTER SET utf8 ,
n2 VARCHAR(10) BINARY CHARACTER SET utf8 ,
n3 VARCHAR(200) BINARY CHARACTER SET utf8 ,
n4 INT
) ENGINE=MYISAM [42001-172]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2.jar:1.3.172]
at org.h2.message.DbException.get(DbException.java:169) ~[h2.jar:1.3.172]
at org.h2.message.DbException.getSyntaxError(DbException.java:194) ~[h2.jar:1.3.172]
at org.h2.command.Parser.getSyntaxError(Parser.java:491) ~[h2.jar:1.3.172]
at org.h2.command.Parser.read(Parser.java:2822) ~[h2.jar:1.3.172]
at org.h2.command.Parser.readIfMore(Parser.java:809) ~[h2.jar:1.3.172]
[error] c.h.h.j.s.l.LoaderTuplesNodes - Error in thread: Problem making new tupleloader
com.hp.hpl.jena.sdb.SDBException: Problem making new tupleloader
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:292) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
Caused by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:288) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
Caused by: com.hp.hpl.jena.sdb.SDBException: Problem initialising loader for [Triples]
at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.<init>(TupleLoaderBase.java:59) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashBase.<init>(TupleLoaderHashBase.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashMySQL.<init>(TupleLoaderHashMySQL.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
Caused by: org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; erwartet "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"
Syntax error in SQL statement "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; expected "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL statement:
CREATE TEMPORARY TABLE NNodeTriples
(n0 BIGINT ,
n1 LONGTEXT BINARY CHARACTER SET utf8 ,
n2 VARCHAR(10) BINARY CHARACTER SET utf8 ,
n3 VARCHAR(200) BINARY CHARACTER SET utf8 ,
n4 INT
) ENGINE=MYISAM [42001-172]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2.jar:1.3.172]
at org.h2.message.DbException.get(DbException.java:169) ~[h2.jar:1.3.172]
at org.h2.message.DbException.getSyntaxError(DbException.java:194) ~[h2.jar:1.3.172]
at org.h2.command.Parser.getSyntaxError(Parser.java:491) ~[h2.jar:1.3.172]
at org.h2.command.Parser.read(Parser.java:2822) ~[h2.jar:1.3.172]
at org.h2.command.Parser.readIfMore(Parser.java:809) ~[h2.jar:1.3.172]
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash, DatabaseType.H2);
La solution
H2 ne comprend pas la syntaxe MySQL E.G.GeneracoDiseTagCode.Chaque syntaxe SQL est différente.Vous devez dire à SDB, il utilise une base de données H2.