POM depepencies com.tinkerpop.blueprints blueprints-core 1.0-SNAPSHOT com.tinkerpop.blueprints blueprints-neo4j-graph 1.0-SNAPSHOT com.tinkerpop.blueprints blueprints-sail-graph 1.0-SNAPSHOT com.tinkerpop.blueprints blueprints-graph-sail 1.0-SNAPSHOT org.openrdf.sesame sesame-sail-api 2.4.2 org.openrdf.sesame sesame-sail-memory 2.4.2 org.openrdf.sesame sesame-sail-nativerdf 2.4.2 org.openrdf.sesame sesame-rio-rdfxml 2.4.2 org.openrdf.sesame sesame-queryparser-sparql 2.4.2 org.openrdf.sesame sesame-repository-api 2.4.2 org.openrdf.sesame sesame-repository-sail 2.4.2 POM repository tinkerpop-repository TinkerPop Maven2 Repository http://tinkerpop.com/maven2 openrdf-repository OpenRDF Maven2 Repository http://repo.aduna-software.org/maven2/releases API Documentation 1) Example article - http://java.dzone.com/news/rdf-data-neo4j-tinkerpop-story 2) Javadoc - http://tinkerpop.com/maven2/com/tinkerpop/blueprints/blueprints/0.9/api/ 3) Wiki - https://github.com/tinkerpop/blueprints/wiki/ API Interaction --------------- 1) Using the Tinkerpop Blueprint API's a) The graph structure public static AmilInterpreter getInterpreter() { if (interpreter == null) { interpreter = new AmilInterpreter(dbName); } interpreter.index().getNodeAutoIndexer().startAutoIndexingProperty("value"); return interpreter; } System.out.println("OWL node properties = " + getInterpreter().getNodeById(171).getPropertyKeys()); System.out.println("OWL link name = " + getInterpreter().getRelationshipById(356).getType().toString()); The test run in SparqlTest.java gives ths: OWL node properties = [kind, value] OWL link name = http://www.w3.org/1999/02/22-rdf-syntax-ns#type N.B. I have trid ed to get indexing of "value property" ... see interpreter.index().getNodeAutoIndexer().startAutoIndexingProperty("value"); b) loading data: private static InputStream getOntologyFile(String filename) { return SparqlTest.class.getClassLoader().getResourceAsStream(filename); } InputStream file1 = getOntologyFile("ontologies/amil.owl"); sailgraph.loadRDF(file1, "http://projects.baesystems.com/META", "rdf-xml", null); c) SParql querying String query1 = "PREFIX cfv: SELECT ?engine WHERE {?engine a cml:Engine .}"; SailGraph sailgraph = getSailGraph(); try { List> result1 = sailgraph.executeSparql(query1); System.out.println(result1); } catch (Exception e) { System.err.println("Error on query1: " + query1 + ": " + e.getMessage()); } Returns [{engine=v[http://projects.baesystems.com/META/ontology/2011/8/cfv#CFVEngine1]}, {engine=v[http://projects.baesystems.com/META/ontology/2011/8/cfv#CFVEngine2]}] which is correct Issues: THere is a bug in SailGraph.java https://github.com/tinkerpop/blueprints/blob/master/blueprints-sail-graph/src/main/java/com/tinkerpop/blueprints/pgm/impls/sail/SailGraph.java to do with processing the results. d) Committing see https://github.com/tinkerpop/blueprints/wiki/Graph-Transactions-Helpers I have not ben able to get this to work. The default is automatic mode transactions which is bad I think. To set to manual mode do: getSailGraph().setTransactionMode(TransactionalGraph$Mode/MANUAL) This is discussed at - http://java.dzone.com/news/rdf-data-neo4j-tinkerpop-story