rdfhdt / hdt-java

HDT Java library and tools.
Other
94 stars 69 forks source link

Fuseki integration seems broken since 3.0.0 #173

Closed athalhammer closed 1 year ago

athalhammer commented 1 year ago

Last working version for me is 2.2.1. After that I get the following when HDT tries to build the initial index of the datafile:

fuseki-hdt_1  | Exception in thread "main" java.lang.NoClassDefFoundError: pl/edu/icm/jlargearrays/LongLargeArray
fuseki-hdt_1  |     at org.rdfhdt.hdt.compact.sequence.SequenceLog64Big.<init>(SequenceLog64Big.java:78)
fuseki-hdt_1  |     at org.rdfhdt.hdt.compact.sequence.SequenceLog64Big.<init>(SequenceLog64Big.java:69)
fuseki-hdt_1  |     at org.rdfhdt.hdt.triples.impl.PredicateIndexArray.generate(PredicateIndexArray.java:71)
fuseki-hdt_1  |     at org.rdfhdt.hdt.triples.impl.BitmapTriples.generateIndex(BitmapTriples.java:658)
fuseki-hdt_1  |     at org.rdfhdt.hdt.hdt.impl.HDTImpl.loadOrCreateIndex(HDTImpl.java:538)
fuseki-hdt_1  |     at org.rdfhdt.hdt.hdt.HDTManagerImpl.doMapIndexedHDT(HDTManagerImpl.java:73)
fuseki-hdt_1  |     at org.rdfhdt.hdt.hdt.HDTManager.mapIndexedHDT(HDTManager.java:209)
fuseki-hdt_1  |     at org.rdfhdt.hdtjena.HDTGraphAssembler.open(HDTGraphAssembler.java:71)
fuseki-hdt_1  |     at org.rdfhdt.hdtjena.HDTGraphAssembler.open(HDTGraphAssembler.java:45)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:157)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:144)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:93)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerGroup.openModel(AssemblerGroup.java:47)
fuseki-hdt_1  |     at org.apache.jena.sparql.core.assembler.DatasetAssemblerGeneral.createDataset(DatasetAssemblerGeneral.java:50)
fuseki-hdt_1  |     at org.apache.jena.sparql.core.assembler.DatasetAssembler.open(DatasetAssembler.java:40)
fuseki-hdt_1  |     at org.apache.jena.sparql.core.assembler.DatasetAssembler.open(DatasetAssembler.java:33)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:157)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:144)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:93)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39)
fuseki-hdt_1  |     at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35)
fuseki-hdt_1  |     at org.apache.jena.fuseki.build.FusekiConfig.getDataset(FusekiConfig.java:667)
fuseki-hdt_1  |     at org.apache.jena.fuseki.build.FusekiConfig.buildDataService(FusekiConfig.java:430)
fuseki-hdt_1  |     at org.apache.jena.fuseki.build.FusekiConfig.buildDataAccessPoint(FusekiConfig.java:417)
fuseki-hdt_1  |     at org.apache.jena.fuseki.build.FusekiConfig.servicesAndDatasets$(FusekiConfig.java:322)
fuseki-hdt_1  |     at org.apache.jena.fuseki.build.FusekiConfig.servicesAndDatasets(FusekiConfig.java:293)
fuseki-hdt_1  |     at org.apache.jena.fuseki.build.FusekiConfig.processServerConfiguration(FusekiConfig.java:192)
fuseki-hdt_1  |     at org.apache.jena.fuseki.main.FusekiServer$Builder.parseConfig(FusekiServer.java:765)
fuseki-hdt_1  |     at org.apache.jena.fuseki.main.FusekiServer$Builder.parseConfigFile(FusekiServer.java:747)
fuseki-hdt_1  |     at org.apache.jena.fuseki.main.cmds.FusekiMain.buildServer(FusekiMain.java:536)
fuseki-hdt_1  |     at org.apache.jena.fuseki.main.cmds.FusekiMain.buildServer(FusekiMain.java:507)
fuseki-hdt_1  |     at org.apache.jena.fuseki.main.cmds.FusekiMain.exec(FusekiMain.java:472)
fuseki-hdt_1  |     at org.apache.jena.cmd.CmdMain.mainMethod(CmdMain.java:87)
fuseki-hdt_1  |     at org.apache.jena.cmd.CmdMain.mainRun(CmdMain.java:56)
fuseki-hdt_1  |     at org.apache.jena.cmd.CmdMain.mainRun(CmdMain.java:43)
fuseki-hdt_1  |     at org.apache.jena.fuseki.main.cmds.FusekiMain.run(FusekiMain.java:126)
fuseki-hdt_1  |     at org.apache.jena.fuseki.main.cmds.FusekiMainCmd.main(FusekiMainCmd.java:47)
fuseki-hdt_1  | Caused by: java.lang.ClassNotFoundException: pl.edu.icm.jlargearrays.LongLargeArray
fuseki-hdt_1  |     at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
fuseki-hdt_1  |     at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
fuseki-hdt_1  |     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
fuseki-hdt_1  |     ... 39 more
athalhammer commented 1 year ago

At least the following page is outdated as you now also need to download the respective JLargeArrays package in the classpath:

https://www.rdfhdt.org/manual-of-hdt-integration-with-jena/

mielvds commented 1 year ago

Support for Fuseki has been removed since 2.2.0. There is preliminary work on fuseki 2, but that turned out to be much more work than expected

athalhammer commented 1 year ago

Thanks @mielvds! I saw that it has been removed as a "maintained folder" but I thought it should be possible to still get it run. In fact, I managed but I needed to extend the classpath from

java -cp "fuseki-server.jar:hdt-api.jar:hdt-java-core.jar:hdt-jena.jar"  org.apache.jena.fuseki.main.cmds.FusekiMainCmd

to

java -cp "fuseki-server.jar:hdt-api.jar:hdt-java-core.jar:hdt-jena.jar:jlargearrays.jar"  org.apache.jena.fuseki.main.cmds.FusekiMainCmd

So my conclusion was that probably since 3.0.0 the dependencies are not packaged into core any longer. If that's the case it may actually have further implications not relating to fuseki as such.

D063520 commented 1 year ago

Related to #167