Skip to content

Commit

Permalink
Able to load data into neo4j in memory database and iterate over all …
Browse files Browse the repository at this point in the history
…sparql query files
  • Loading branch information
LakshyAAAgrawal committed Mar 24, 2021
1 parent 45956e7 commit d501936
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 39 deletions.
19 changes: 19 additions & 0 deletions snippets/write_to_file.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
29 changes: 2 additions & 27 deletions src/com/KRacR/s2c/SparqlToCypher.java
Original file line number Diff line number Diff line change
Expand Up @@ -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";
}
}
58 changes: 46 additions & 12 deletions src/test/java/com/KRacR/s2c/SparqlToCypherTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand All @@ -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);
}

}

Expand Down Expand Up @@ -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();
}
}

0 comments on commit d501936

Please sign in to comment.