├── README
├── pom.xml
└── src
└── main
└── java
└── org
└── acaro
└── dbpedia4neo
├── inserter
├── DBpediaLoader.java
└── TripleHandler.java
└── web
├── Main.java
└── QueryHandler.java
/README:
--------------------------------------------------------------------------------
1 | A set of hacks to setup a dbpedia endpoint through neo4j
2 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | org.acaro.dbpedia4neo
5 | dbpedia4neo
6 | jar
7 | 1.0-SNAPSHOT
8 |
9 | 7.2.2.v20101205
10 |
11 | dbpedia4neo
12 | http://maven.apache.org
13 |
14 |
15 |
16 | org.apache.maven.plugins
17 | maven-eclipse-plugin
18 | 2.5
19 |
20 | true
21 | true
22 | true
23 |
24 |
25 |
26 | org.apache.maven.plugins
27 | maven-compiler-plugin
28 | 2.3.2
29 |
30 | 1.6
31 | 1.6
32 |
33 |
34 |
35 |
36 |
37 |
38 | com.tinkerpop.blueprints
39 | blueprints-graph-sail
40 | 0.7
41 |
42 |
43 | com.tinkerpop.blueprints
44 | blueprints-sail-graph
45 | 0.7
46 |
47 |
48 | com.tinkerpop.blueprints
49 | blueprints-neo4j-graph
50 | 0.7
51 |
52 |
53 | junit
54 | junit
55 | 3.8.1
56 | test
57 |
58 |
59 | org.openrdf.sesame
60 | sesame-rio-ntriples
61 | 2.3.2
62 |
63 |
64 | org.openrdf.sesame
65 | sesame-repository-api
66 | 2.3.2
67 |
68 |
69 | org.openrdf.sesame
70 | sesame-repository-sail
71 | 2.3.2
72 |
73 |
74 | org.slf4j
75 | slf4j-api
76 | 1.5.6
77 |
78 |
79 | org.slf4j
80 | slf4j-jdk14
81 | 1.5.6
82 |
83 |
84 | org.slf4j
85 | jcl-over-slf4j
86 | 1.5.6
87 |
88 |
89 | org.openrdf.sesame
90 | sesame-queryparser-sparql
91 | 2.3.2
92 |
93 |
94 | org.eclipse.jetty
95 | jetty-server
96 | ${jettyVersion}
97 |
98 |
99 | org.eclipse.jetty
100 | jetty-servlet
101 | ${jettyVersion}
102 |
103 |
104 | org.eclipse.jetty
105 | jetty-websocket
106 | ${jettyVersion}
107 |
108 |
109 | commons-lang
110 | commons-lang
111 | 2.5
112 |
113 |
114 |
115 |
116 | tinkerpop-repository
117 | TinkerPop Maven2 Repository
118 | http://tinkerpop.com/maven2
119 |
120 | true
121 | always
122 |
123 |
124 |
125 | neo4j repo
126 | neo4j repo
127 | http://m2.neo4j.org/snapshots/
128 |
129 |
130 | openrdf
131 | openrdf
132 | http://repo.aduna-software.org/maven2/releases/
133 |
134 |
135 |
136 |
--------------------------------------------------------------------------------
/src/main/java/org/acaro/dbpedia4neo/inserter/DBpediaLoader.java:
--------------------------------------------------------------------------------
1 | package org.acaro.dbpedia4neo.inserter;
2 |
3 | import java.io.BufferedInputStream;
4 | import java.io.File;
5 | import java.io.FileInputStream;
6 | import java.io.FileNotFoundException;
7 | import java.io.IOException;
8 |
9 | import org.openrdf.model.ValueFactory;
10 | import org.openrdf.rio.ParseErrorListener;
11 | import org.openrdf.rio.RDFHandlerException;
12 | import org.openrdf.rio.RDFParseException;
13 | import org.openrdf.rio.ntriples.NTriplesParser;
14 | import org.openrdf.sail.Sail;
15 | import org.openrdf.sail.SailConnection;
16 | import org.openrdf.sail.SailException;
17 |
18 | import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jGraph;
19 | import com.tinkerpop.blueprints.pgm.oupls.sail.GraphSail;
20 | import com.tinkerpop.blueprints.pgm.util.TransactionalGraphHelper;
21 | import com.tinkerpop.blueprints.pgm.util.TransactionalGraphHelper.CommitManager;
22 |
23 | public class DBpediaLoader
24 | {
25 | public static void main( String[] args )
26 | throws SailException, RDFParseException, RDFHandlerException, FileNotFoundException, IOException
27 | {
28 | Neo4jGraph neo = new Neo4jGraph("dbpedia4neo");
29 | Sail sail = new GraphSail(neo);
30 | CommitManager manager = TransactionalGraphHelper.createCommitManager(neo, 10000);
31 |
32 | for (String file: args) {
33 | System.out.println("Loading " + file + ": ");
34 | loadFile(file, sail.getConnection(), sail.getValueFactory(), manager);
35 | System.out.print('\n');
36 | }
37 | manager.close();
38 | sail.shutDown();
39 | }
40 |
41 | private static void loadFile(final String file, SailConnection sc, ValueFactory vf, CommitManager manager) throws RDFParseException, RDFHandlerException, FileNotFoundException, IOException {
42 | NTriplesParser parser = new NTriplesParser(vf);
43 | TripleHandler handler = new TripleHandler(sc, manager);
44 | parser.setRDFHandler(handler);
45 | parser.setStopAtFirstError(false);
46 | parser.setParseErrorListener(new ParseErrorListener() {
47 |
48 | @Override
49 | public void warning(String msg, int lineNo, int colNo) {
50 | System.err.println("warning: " + msg);
51 | System.err.println("file: " + file + " line: " + lineNo + " column: " +colNo);
52 | }
53 |
54 | @Override
55 | public void error(String msg, int lineNo, int colNo) {
56 | System.err.println("error: " + msg);
57 | System.err.println("file: " + file + " line: " + lineNo + " column: " +colNo);
58 | }
59 |
60 | @Override
61 | public void fatalError(String msg, int lineNo, int colNo) {
62 | System.err.println("fatal: " + msg);
63 | System.err.println("file: " + file + " line: " + lineNo + " column: " +colNo);
64 | }
65 |
66 | });
67 | parser.parse(new BufferedInputStream(new FileInputStream(new File(file))), "http://dbpedia.org/");
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/org/acaro/dbpedia4neo/inserter/TripleHandler.java:
--------------------------------------------------------------------------------
1 | package org.acaro.dbpedia4neo.inserter;
2 |
3 | import org.openrdf.model.Statement;
4 | import org.openrdf.rio.RDFHandler;
5 | import org.openrdf.rio.RDFHandlerException;
6 | import org.openrdf.sail.SailConnection;
7 | import org.openrdf.sail.SailException;
8 |
9 | import com.tinkerpop.blueprints.pgm.util.TransactionalGraphHelper.CommitManager;
10 |
11 | public class TripleHandler implements RDFHandler {
12 | private SailConnection sc;
13 | private CommitManager manager;
14 |
15 | public TripleHandler(SailConnection sc, CommitManager manager) {
16 | this.sc = sc;
17 | this.manager = manager;
18 | }
19 |
20 | public void handleComment(String arg0) throws RDFHandlerException {
21 | }
22 |
23 | public void handleNamespace(String arg0, String arg1)
24 | throws RDFHandlerException {
25 | }
26 |
27 | public void handleStatement(Statement arg0) {
28 |
29 | try {
30 | // avoid self-cycles
31 | if (arg0.getSubject().stringValue().equals(arg0.getObject().stringValue()))
32 | return;
33 |
34 | sc.addStatement(arg0.getSubject(), arg0.getPredicate(), arg0.getObject());
35 | manager.incrCounter();
36 | if (manager.atCommit())
37 | System.out.print(".");
38 | } catch (SailException e) {
39 | e.printStackTrace();
40 | } catch (Exception e) {
41 | e.printStackTrace();
42 | System.out.println("Subject: " + arg0.getSubject().toString() +
43 | " Predicate: " + arg0.getPredicate().toString() +
44 | " Object: " + arg0.getObject().toString());
45 | }
46 | }
47 |
48 | public void startRDF() throws RDFHandlerException {
49 | }
50 |
51 | public void endRDF() throws RDFHandlerException {
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/org/acaro/dbpedia4neo/web/Main.java:
--------------------------------------------------------------------------------
1 | package org.acaro.dbpedia4neo.web;
2 |
3 | import org.eclipse.jetty.server.Server;
4 | import org.eclipse.jetty.servlet.ServletContextHandler;
5 | import org.eclipse.jetty.servlet.ServletHolder;
6 |
7 | import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jGraph;
8 | import com.tinkerpop.blueprints.pgm.impls.sail.SailGraph;
9 | import com.tinkerpop.blueprints.pgm.oupls.sail.GraphSail;
10 |
11 | public class Main {
12 | public static void main(String[] args) throws Exception {
13 |
14 | final Server server = new Server(8081);
15 | final Neo4jGraph neo = new Neo4jGraph("dbpedia4neo");
16 | final GraphSail gsail = new GraphSail(neo);
17 | final SailGraph sail = new SailGraph(gsail);
18 |
19 | ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
20 | context.setContextPath("/");
21 | server.setHandler(context);
22 |
23 | // set the query handler
24 | context.addServlet(new ServletHolder(new QueryHandler(sail)), "/query");
25 |
26 | // we need a clean shutdown
27 | Runtime.getRuntime().addShutdownHook(new Thread() {
28 | @Override
29 | public void run() {
30 | try {
31 | System.out.println("Shutting down...");
32 | server.stop();
33 | sail.shutdown();
34 | } catch (Exception e) {
35 | e.printStackTrace();
36 | }
37 | }
38 | });
39 | // start the server
40 | server.start();
41 | server.join();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/org/acaro/dbpedia4neo/web/QueryHandler.java:
--------------------------------------------------------------------------------
1 | package org.acaro.dbpedia4neo.web;
2 |
3 | import javax.servlet.http.HttpServlet;
4 | import javax.servlet.http.HttpServletRequest;
5 | import javax.servlet.http.HttpServletResponse;
6 |
7 | import org.apache.commons.lang.StringEscapeUtils;
8 |
9 | import com.tinkerpop.blueprints.pgm.Vertex;
10 | import com.tinkerpop.blueprints.pgm.impls.sail.SailGraph;
11 |
12 | import java.io.IOException;
13 | import java.io.PrintWriter;
14 | import java.util.List;
15 | import java.util.Map;
16 | import java.util.Map.Entry;
17 |
18 | @SuppressWarnings("serial")
19 | public class QueryHandler extends HttpServlet {
20 | private static final String FORM = "
Type in your query:
" +
21 | "";
25 | private static final String QUERY = "This was your query: %s
";
26 | private static final String HEADER = "%s";
27 | private static final String FOOTER = "