diff --git a/snippets/write_to_file.java b/snippets/write_to_file.java new file mode 100644 index 0000000..2ddd2a6 --- /dev/null +++ b/snippets/write_to_file.java @@ -0,0 +1,19 @@ +private static void write_to_file(String string, String output_file) throws IOException { + BufferedWriter out = null; + + try { + FileWriter fstream = new FileWriter(output_file, true); //true tells to append data. + out = new BufferedWriter(fstream); + out.write(string); + } + + catch (IOException e) { + System.err.println("Error: " + e.getMessage()); + } + + finally { + if(out != null) { + out.close(); + } + } + } diff --git a/src/com/KRacR/s2c/SparqlToCypher.java b/src/com/KRacR/s2c/SparqlToCypher.java index 9e4b7f0..37693d5 100644 --- a/src/com/KRacR/s2c/SparqlToCypher.java +++ b/src/com/KRacR/s2c/SparqlToCypher.java @@ -6,32 +6,7 @@ import java.lang.String; public class SparqlToCypher { - public static void convert(String sparql_file, String output_file) { - try { - write_to_file("match (n)-[e:Edge]->(r {vname:\"http://localhost/persons/Paul_Erdoes\"}) return n.vname, e.type;", output_file); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private static void write_to_file(String string, String output_file) throws IOException { - BufferedWriter out = null; - - try { - FileWriter fstream = new FileWriter(output_file, true); //true tells to append data. - out = new BufferedWriter(fstream); - out.write(string); - } - - catch (IOException e) { - System.err.println("Error: " + e.getMessage()); - } - - finally { - if(out != null) { - out.close(); - } - } + public static String convert(String sparql_query) { + return "match (n)-[e:Edge]->(r {vname:\"http://localhost/persons/Paul_Erdoes\"}) return n.vname, e.type"; } } diff --git a/src/test/java/com/KRacR/s2c/SparqlToCypherTest.java b/src/test/java/com/KRacR/s2c/SparqlToCypherTest.java index 0ca6b27..f8b36f3 100644 --- a/src/test/java/com/KRacR/s2c/SparqlToCypherTest.java +++ b/src/test/java/com/KRacR/s2c/SparqlToCypherTest.java @@ -2,32 +2,25 @@ //import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.neo4j.graphdb.Label.label; - import java.io.File; import java.io.FileFilter; import java.io.IOException; -import java.net.URISyntaxException; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; -import java.util.List; import org.junit.Test; import org.neo4j.driver.v1.Config; import org.neo4j.driver.v1.Driver; import org.neo4j.driver.v1.GraphDatabase; import org.neo4j.driver.v1.Session; -import org.neo4j.driver.v1.StatementResult; -import org.neo4j.driver.v1.Value; -import org.neo4j.driver.v1.Values; -import org.neo4j.graphdb.Node; -import org.neo4j.graphdb.Transaction; import org.neo4j.harness.ServerControls; import org.neo4j.harness.TestServerBuilders; +import com.KRacR.s2c.SparqlToCypher; + /** * Unit test for Sparql to Cypher */ @@ -54,7 +47,45 @@ private void run_TTL_Automated_Test(String folder) { fail("RDFtoPGConverter interrupted for folder " + folder); } - // Create in-memory neo4j database + // Create in-memory neo4j database and load converted Output.json + try (Driver driver = GraphDatabase.driver(embeddedDatabaseServer.boltURI(), driverConfig); + Session session = driver.session()) { + session.run( + "with \"file:///" + + Paths.get(folder, "Output.json").toAbsolutePath().toString() + + "\" as url " + + "CALL apoc.load.json(url) yield value " + + "unwind value.vertices as vertex " + + "unwind value.edges as edge " + + "merge (v {id:vertex.id, vname:vertex.vname}) on create set v=vertex " + + "merge ({vname:edge.out})-[e:Edge {id:edge.id, type:edge.type}]->({vname:edge.in}) on create set e=edge" + ); + } + + // Iterate over all sparql files in query + FileFilter sparqlFilter = new FileFilter() { + public boolean accept(File file) { + String extension = ""; + + int i = file.getName().lastIndexOf('.'); + if (i > 0) { + extension = file.getName().substring(i+1); + } + + return file.isFile() && (extension.equals("sparql")); + } + }; + + File[] query_files = Paths.get(folder, "queries").toFile().listFiles(sparqlFilter); + for (File query_file : query_files) { + String sparql_query = null; + try { + sparql_query = new String(Files.readAllBytes(query_file.toPath())); + } catch (IOException e) { + e.printStackTrace(); + } + String cypher_query = SparqlToCypher.convert(sparql_query); + } } @@ -86,6 +117,9 @@ private void delete_all_from_database() { } private void setupNeo4jServer() { - this.embeddedDatabaseServer = TestServerBuilders.newInProcessBuilder().withProcedure(apoc.load.LoadJson.class).newServer(); + this.embeddedDatabaseServer = TestServerBuilders.newInProcessBuilder() + .withProcedure(apoc.load.LoadJson.class) + .withConfig("apoc.import.file.enabled", "true") + .newServer(); } }