Hi Mr.Huf, I think your advice worked fine for me. I have in the end on RDF/XML file which I think contains all the data from the other files.
Thanks a lot. On Fri, Feb 12, 2021 at 3:43 PM Alexis Armin Huf <alexis...@gmail.com> wrote: > Hi, emri. > > In my experience with Jena I have observed that Graphs are more efficient > than Models when there is too much data being iterated. Also, at every > createUnion() call, your code is creating a new Union graph which in the > end will yield a tree of 700 models that will potentially be traversed when > doing searches (which the RDF/XML serializer will eventually have to do in > order to layout resources properly inside the XML). > > Maybe this will be faster: > > public static void main(String[] args) throws Exception{ > File folder = new File("C:\\Users\\Admin\\Desktop\\KG"); > Graph acc = GraphFactory.createDefaultGraph(); > RDFDataMgr.read(acc, > "file:C:\\Users\\Admin\\Desktop\\KG\\AccessComponent.bo.rdf"); > for (File file : folder.listFiles()) { > if (file.isFile()) > RDFDataMgr.read(acc, file.toURI().toString()); > } > try (FileOutputStream out = new > FileOutputStream("C:\\Users\\Admin\\Desktop\\merged.rdf")) { > RDFDataMgr.write(out, acc, RDFFormat.RDFXML); > } > } > > > Note that I have not tested this, you may want to run some iterations under > the debugger. > > On Fri, Feb 12, 2021 at 9:29 AM emri mbiemri <emrimbiemri8...@gmail.com> > wrote: > > > Hi, the code is: > > ---------------------------------- > > > > > > public class RDFMerge { > > > > private static File folder; > > private static Model kg; > > // private static OutputStream out; > > > > public static void iterate() { > > > > folder = new File("C:\\Users\\Admin\\Desktop\\KG"); > > kg = > > > > > ModelFactory.createDefaultModel().read("C:\\Users\\Admin\\Desktop\\KG\\AccessComponent.bo.rdf"); > > > > File[] listOfFiles = folder.listFiles(); // Interating through the > > directory > > for (File file : listOfFiles) { > > > > if (file.isFile()) { > > > > kg = merge(kg, file); > > > > } > > > > } > > > > > > OutputStream out1; > > try { out1 = new FileOutputStream( new > > File("C:\\Users\\Admin\\Desktop\\merged.rdf")); > > kg.write( out1, "RDF/XML", null ); > > System.out.println("RDFs merged successfully!"); } > > catch(FileNotFoundException e) { e.printStackTrace(); } > > > > > > } > > > > > > public static Model merge(Model k, File i) { > > > > // Model kg_in = > > ModelFactory.createDefaultModel().read(k.getAbsolutePath()); > > Model other_in = > > ModelFactory.createDefaultModel().read(i.getAbsolutePath()); > > > > Model union = ModelFactory.createUnion(k, other_in); > > return union; > > }} > > > > On Fri, Feb 12, 2021 at 2:12 PM Andy Seaborne <a...@apache.org> wrote: > > > > > Hi there - the attachment didn't make it through. > > > > > > Could you include the code in the body of the message please? Or put in > > > somewhere like a gist on github / pastebin /... and send a link. > > > > > > Andy > > > > > > On 12/02/2021 11:45, emri mbiemri wrote: > > > > Dear all, > > > > > > > > Do you know how I can merge some thousands RDF models into a single > > one? > > > > I have tried it by iteration through all files within a folder and > then > > > > using Jena's union function to merge them one by one! The problem is > > > > that the program is running for more than 13 hours and is still not > > > > stopping (with only 50 models as test). > > > > > > > > So far I have close to 700 models, in total 68MB. > > > > > > > > Attached you seen the code I am using for. > > > > > > > > Do you have any idea what I can do to merge all these files into a > > > > single knowledge-graph? > > > > > > > > Thanks for your help. > > > > > > > > -- > Alexis Armin Huf <alexis...@gmail.com> >