From a7c2c280f99638eecf39fddcf79b585c27482d99 Mon Sep 17 00:00:00 2001 From: vguerbet Date: Thu, 20 Jun 2024 11:59:30 +0200 Subject: [PATCH] - Fixed issue with TTL and N3 format not loading --- kb/pom.xml | 18 +++++++-- kb/src/main/java/amie/data/KB.java | 38 ++++++++++--------- .../java/amie/data/StoreStatementToKB.java | 6 +-- mining/pom.xml | 2 +- mining/src/main/java/amie/mining/AMIE.java | 2 - rules/pom.xml | 6 +++ 6 files changed, 46 insertions(+), 26 deletions(-) diff --git a/kb/pom.xml b/kb/pom.xml index 7f12e57..381d0ce 100644 --- a/kb/pom.xml +++ b/kb/pom.xml @@ -26,8 +26,8 @@ **/WikidataCleaner.java - 11 - 11 + 17 + 17 @@ -51,10 +51,22 @@ javafx-base 11 + + org.eclipse.rdf4j + rdf4j-rio-turtle + 5.0.0-M3 + pom + + + org.eclipse.rdf4j + rdf4j-rio-n3 + 5.0.0-M3 + pom + org.eclipse.rdf4j rdf4j-storage - 4.3.2 + 5.0.0-M3 pom diff --git a/kb/src/main/java/amie/data/KB.java b/kb/src/main/java/amie/data/KB.java index 33c8786..873641e 100644 --- a/kb/src/main/java/amie/data/KB.java +++ b/kb/src/main/java/amie/data/KB.java @@ -3,7 +3,7 @@ import static amie.data.U.decrease; import static amie.data.U.decreasingKeys; import static amie.data.U.increase; -import static com.hp.hpl.jena.sparql.engine.optimizer.reorder.ReorderTransformationBase.log; +//import static com.hp.hpl.jena.sparql.engine.optimizer.reorder.ReorderTransformationBase.log; import amie.data.starpattern.SignedPredicate; import amie.data.tuple.IntArrays; @@ -33,6 +33,10 @@ import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.RDFParser; import org.eclipse.rdf4j.rio.Rio; +import org.eclipse.rdf4j.rio.helpers.AbstractRDFParser; +import org.eclipse.rdf4j.rio.turtle.TurtleParser; +import org.eclipse.rdf4j.rio.n3.N3Parser; + /** * Class KB @@ -221,25 +225,25 @@ protected void load(File f, String message) + String.format("%d s", (System.currentTimeMillis() - time) / 1000)); } - if (f.getPath().endsWith(".ttl") || f.getPath().endsWith(".nt")) { + if (f.getPath().endsWith(RDFFormat.TURTLE.getDefaultFileExtension()) || + f.getPath().endsWith(RDFFormat.N3.getDefaultFileExtension())) { + InputStream in = null; try { - InputStream in = Files.newInputStream(Paths.get(f.getPath())); - - if (f.getPath().endsWith(".ttl")){ - StoreStatementToKB abstractRDFHandler = new StoreStatementToKB(this); - RDFParser rdfParser = Rio.createParser(RDFFormat.TURTLE); - rdfParser.setRDFHandler(abstractRDFHandler); - rdfParser.parse(in); - } - else{ - StoreStatementToKB abstractRDFHandler = new StoreStatementToKB(this); - RDFParser rdfParser = Rio.createParser(RDFFormat.N3); - rdfParser.setRDFHandler(abstractRDFHandler); - rdfParser.parse(in); - } + in = Files.newInputStream(Paths.get(f.getPath())); + StoreStatementToKB abstractRDFHandler = new StoreStatementToKB(this); + AbstractRDFParser rdfParser ; + if (f.getPath().endsWith(RDFFormat.TURTLE.getDefaultFileExtension())){ + rdfParser = new TurtleParser(); + } else{ + rdfParser = new N3Parser(); + } + rdfParser.setRDFHandler(abstractRDFHandler); + rdfParser.parse(in); } catch (Exception e) { - log.error("ParseInputFiles.parseTTLOrNTFileInLine parse TTL or NT error, filePath:{}", f.getPath(),e ); throw e ; + } finally { + if (in != null) + in.close() ; } } else { for (String line : new FileLines(f, "UTF-8", message)) { diff --git a/kb/src/main/java/amie/data/StoreStatementToKB.java b/kb/src/main/java/amie/data/StoreStatementToKB.java index d99caba..64a4d29 100644 --- a/kb/src/main/java/amie/data/StoreStatementToKB.java +++ b/kb/src/main/java/amie/data/StoreStatementToKB.java @@ -10,18 +10,18 @@ public class StoreStatementToKB extends AbstractRDFHandler { private static int counter = 0; - private AbstractKB kb; + private KB kb; private static Map prefixes=new HashMap<>(); - StoreStatementToKB(AbstractKB kb){ + StoreStatementToKB(KB kb){ this.kb = kb; } public void handleStatement(Statement st) { String subject = getFormattedValue(String.valueOf(st.getSubject())); String object = getFormattedValue(String.valueOf(st.getObject())); String predict = getFormattedValue(String.valueOf(st.getPredicate())); - ((KB) kb).add(subject, predict, object); + kb.add(subject, predict, object); } public String getFormattedValue(String value) { diff --git a/mining/pom.xml b/mining/pom.xml index c523106..11dc943 100644 --- a/mining/pom.xml +++ b/mining/pom.xml @@ -66,7 +66,7 @@ jar-with-dependencies - amie3.5 + amie3.5.1 false ../bin diff --git a/mining/src/main/java/amie/mining/AMIE.java b/mining/src/main/java/amie/mining/AMIE.java index 1fc0c4d..8be2bfa 100644 --- a/mining/src/main/java/amie/mining/AMIE.java +++ b/mining/src/main/java/amie/mining/AMIE.java @@ -36,8 +36,6 @@ import amie.data.javatools.datatypes.MultiMap; import org.apache.commons.lang.StringUtils; -import org.apache.zookeeper.Op; - /** * Main class that implements the AMIE algorithm for rule mining on ontologies. * The ontology must be provided as a list of TSV files where each line has the diff --git a/rules/pom.xml b/rules/pom.xml index 4e9f562..df20aeb 100644 --- a/rules/pom.xml +++ b/rules/pom.xml @@ -26,5 +26,11 @@ kb 1.0 + + org.apache.commons + commons-math3 + 3.6.1 + compile +