use of com.tinkerpop.blueprints.Edge in project blueprints by tinkerpop.
the class Neo4jBatchGraphTest method testElementPropertyManipulation.
public void testElementPropertyManipulation() {
final String directory = this.getWorkingDirectory();
final Neo4jBatchGraph batch = new Neo4jBatchGraph(directory);
List<Long> vertexIds = new ArrayList<Long>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("a", 1);
map.put("b", 2);
Vertex vertex = batch.addVertex(map);
assertEquals(vertex.getProperty("a"), 1);
assertEquals(vertex.getProperty("b"), 2);
assertEquals(vertex.getPropertyKeys().size(), 2);
vertex.setProperty("b", 3);
vertex.setProperty("c", 4);
assertEquals(vertex.getProperty("a"), 1);
assertEquals(vertex.getProperty("b"), 3);
assertEquals(vertex.getProperty("c"), 4);
assertEquals(vertex.getPropertyKeys().size(), 3);
assertEquals(vertex.removeProperty("a"), 1);
assertNull(vertex.getProperty("a"));
assertEquals(vertex.getProperty("b"), 3);
assertEquals(vertex.getProperty("c"), 4);
assertEquals(vertex.getPropertyKeys().size(), 2);
vertexIds.add((Long) vertex.getId());
}
assertEquals(vertexIds.size(), 10);
List<Long> edgeIds = new ArrayList<Long>();
Random random = new Random();
for (int i = 0; i < 10; i++) {
Edge edge = batch.addEdge(null, batch.getVertex(vertexIds.get(random.nextInt(vertexIds.size()))), batch.getVertex(vertexIds.get(random.nextInt(vertexIds.size()))), "test");
edgeIds.add((Long) edge.getId());
assertEquals(edge.getPropertyKeys().size(), 0);
edge.setProperty("weight", 0.5);
assertEquals(edge.getProperty("weight"), 0.5);
assertEquals(edge.getPropertyKeys().size(), 1);
edge.setProperty("blah", "dah");
assertEquals(edge.getPropertyKeys().size(), 2);
assertEquals(edge.getProperty("blah"), "dah");
edge.setProperty("blah", "blue");
assertEquals(edge.getPropertyKeys().size(), 2);
assertEquals(edge.getProperty("blah"), "blue");
assertEquals(edge.removeProperty("blah"), "blue");
assertEquals(edge.getPropertyKeys().size(), 1);
}
batch.shutdown();
// native neo4j graph load
Neo4jGraph graph = new Neo4jGraph(directory);
assertEquals(count(graph.getVertices()), 10);
for (final Long id : vertexIds) {
Vertex vertex = graph.getVertex(id);
assertNull(vertex.getProperty("a"));
assertEquals(vertex.getProperty("b"), 3);
assertEquals(vertex.getProperty("c"), 4);
assertEquals(vertex.getPropertyKeys().size(), 2);
}
for (final Long id : edgeIds) {
Edge edge = graph.getEdge(id);
assertNull(edge.getProperty("blah"));
assertEquals(edge.getPropertyKeys().size(), 1);
assertEquals(edge.getProperty("weight"), 0.5);
}
graph.shutdown();
}
use of com.tinkerpop.blueprints.Edge in project blueprints by tinkerpop.
the class Neo4jBatchGraphTest method testGraphMLLoad.
public void testGraphMLLoad() throws Exception {
final String directory = this.getWorkingDirectory();
final Neo4jBatchGraph batch = new Neo4jBatchGraph(directory);
new GraphMLReader(batch).inputGraph(GraphMLReader.class.getResourceAsStream("graph-example-1.xml"));
assertNotNull(batch.getVertex(1));
assertNotNull(batch.getVertex(2));
assertNotNull(batch.getVertex(3));
assertNotNull(batch.getVertex(4));
assertNotNull(batch.getVertex(5));
assertNotNull(batch.getVertex(6));
assertNull(batch.getVertex(7));
assertEquals(batch.getVertex(1).getProperty("name"), "marko");
assertEquals(batch.getVertex(2).getProperty("name"), "vadas");
assertEquals(batch.getVertex(3).getProperty("name"), "lop");
assertEquals(batch.getVertex(4).getProperty("name"), "josh");
assertEquals(batch.getVertex(5).getProperty("name"), "ripple");
assertEquals(batch.getVertex(6).getProperty("name"), "peter");
batch.shutdown();
// native neo4j graph load
Neo4jGraph graph = new Neo4jGraph(directory);
assertEquals(count(graph.getVertices()), 6);
assertEquals(count(graph.getEdges()), 6);
assertEquals(count(graph.getVertex("1").getEdges(Direction.OUT)), 3);
assertEquals(count(graph.getVertex("1").getEdges(Direction.IN)), 0);
Vertex marko = graph.getVertex("1");
assertEquals(marko.getProperty("name"), "marko");
assertEquals(marko.getProperty("age"), 29);
int counter = 0;
assertEquals(count(graph.getVertex("4").getEdges(Direction.OUT)), 2);
assertEquals(count(graph.getVertex("4").getEdges(Direction.IN)), 1);
Vertex josh = graph.getVertex("4");
assertEquals(josh.getProperty("name"), "josh");
assertEquals(josh.getProperty("age"), 32);
for (Edge e : graph.getVertex("4").getEdges(Direction.OUT)) {
if (e.getVertex(Direction.IN).getId().equals(3l)) {
assertEquals(Math.round((Float) e.getProperty("weight")), 0);
assertEquals(e.getLabel(), "created");
counter++;
} else if (e.getVertex(Direction.IN).getId().equals(5l)) {
assertEquals(Math.round((Float) e.getProperty("weight")), 1);
assertEquals(e.getLabel(), "created");
counter++;
}
}
assertEquals(counter, 2);
graph.shutdown();
}
use of com.tinkerpop.blueprints.Edge in project blueprints by tinkerpop.
the class Neo4jBatchGraphTest method testAddingVerticesEdgesWithIndices.
public void testAddingVerticesEdgesWithIndices() {
final String directory = this.getWorkingDirectory();
final Neo4jBatchGraph batch = new Neo4jBatchGraph(directory);
assertEquals(0, count(batch.getIndices()));
batch.createKeyIndex("name", Vertex.class);
batch.createKeyIndex("age", Vertex.class);
Index<Edge> edgeIndex = batch.createIndex("edgeIdx", Edge.class);
assertEquals(1, count(batch.getIndices()));
for (final Index index : batch.getIndices()) {
if (index.getIndexName().equals("edgeIdx")) {
assertEquals(index.getIndexClass(), Edge.class);
} else {
throw new RuntimeException("There should not be another index.");
}
}
final List<Long> ids = new ArrayList<Long>();
for (int i = 0; i < 10; i++) {
final Map<String, Object> map = new HashMap<String, Object>();
map.put("name", i + "");
map.put("age", i * 10);
map.put("nothing", 0);
ids.add((Long) batch.addVertex(map).getId());
}
for (int i = 1; i < ids.size(); i++) {
final Map<String, Object> map = new HashMap<String, Object>();
map.put("weight", 0.5f);
long idA = ids.get(i - 1);
long idB = ids.get(i);
final Edge edge = batch.addEdge(map, batch.getVertex(idA), batch.getVertex(idB), idA + "-" + idB);
edgeIndex.put("unique", idA + "-" + idB, edge);
edgeIndex.put("full", "blah", edge);
}
batch.flushIndices();
batch.shutdown();
// native neo4j graph load
final Neo4jGraph graph = new Neo4jGraph(directory);
assertEquals(count(graph.getIndices()), 1);
assertEquals(graph.getIndexedKeys(Vertex.class).size(), 2);
assertTrue(graph.getIndexedKeys(Vertex.class).contains("name"));
assertTrue(graph.getIndexedKeys(Vertex.class).contains("age"));
edgeIndex = graph.getIndex("edgeIdx", Edge.class);
assertEquals(edgeIndex.getIndexClass(), Edge.class);
assertEquals(count(graph.getVertices()), 10);
assertTrue(graph.getVertices("nothing", 0) instanceof PropertyFilteredIterable);
assertTrue(graph.getVertices("blah", "blop") instanceof PropertyFilteredIterable);
// key index used
assertFalse(graph.getVertices("name", "marko") instanceof PropertyFilteredIterable);
// key indexed used
assertFalse(graph.getVertices("age", 32) instanceof PropertyFilteredIterable);
for (final Vertex vertex : graph.getVertices()) {
int age = (Integer) vertex.getProperty("age");
assertEquals(vertex.getProperty("name"), (age / 10) + "");
assertTrue(graph.getVertices("nothing", 0).iterator().hasNext());
assertEquals(count(graph.getVertices("age", age)), 1);
assertEquals(graph.getVertices("age", age).iterator().next(), vertex);
assertEquals(count(graph.getVertices("name", (age / 10) + "")), 1);
assertEquals(graph.getVertices("name", (age / 10) + "").iterator().next(), vertex);
assertEquals(vertex.getPropertyKeys().size(), 3);
vertex.setProperty("NEW", age);
assertEquals(vertex.getPropertyKeys().size(), 4);
}
for (final Vertex vertex : graph.getVertices()) {
int age = (Integer) vertex.getProperty("age");
assertEquals(vertex.getProperty("NEW"), age);
assertEquals(vertex.getPropertyKeys().size(), 4);
vertex.removeProperty("NEW");
}
for (final Vertex vertex : graph.getVertices()) {
assertNull(vertex.getProperty("NEW"));
assertEquals(vertex.getPropertyKeys().size(), 3);
}
assertEquals(count(graph.getEdges()), 9);
assertEquals(count(edgeIndex.get("full", "blah")), 9);
Set<Edge> edges = new HashSet<Edge>();
for (Edge edge : edgeIndex.get("full", "blah")) {
edges.add(edge);
}
assertEquals(edges.size(), 9);
for (final Edge edge : graph.getEdges()) {
long idA = (Long) edge.getVertex(Direction.OUT).getId();
long idB = (Long) edge.getVertex(Direction.IN).getId();
assertEquals(idA + 1, idB);
assertEquals(edge.getLabel(), idA + "-" + idB);
assertEquals(edge.getPropertyKeys().size(), 1);
assertEquals(edge.getProperty("weight"), 0.5f);
assertEquals(edgeIndex.count("weight", 0.5f), 0);
assertEquals(edgeIndex.count("unique", idA + "-" + idB), 1);
assertEquals(edgeIndex.get("unique", idA + "-" + idB).iterator().next(), edge);
assertTrue(edges.contains(edge));
}
graph.shutdown();
}
use of com.tinkerpop.blueprints.Edge in project blueprints by tinkerpop.
the class Neo4j2Graph method getEdges.
public Iterable<Edge> getEdges(final String key, final Object value) {
this.autoStartTransaction(false);
final AutoIndexer<?> indexer = this.rawGraph.index().getRelationshipAutoIndexer();
if (indexer.isEnabled() && indexer.getAutoIndexedProperties().contains(key))
return new Neo4j2EdgeIterable(this.rawGraph.index().getRelationshipAutoIndexer().getAutoIndex().get(key, value), this);
else
return new PropertyFilteredIterable<Edge>(key, value, this.getEdges());
}
use of com.tinkerpop.blueprints.Edge in project blueprints by tinkerpop.
the class Neo4j2BenchmarkTestSuite method testNeo4jGraph.
public void testNeo4jGraph() throws Exception {
double totalTime = 0.0d;
Graph graph = graphTest.generateGraph();
GraphMLReader.inputGraph(graph, GraphMLReader.class.getResourceAsStream("graph-example-2.xml"));
graph.shutdown();
for (int i = 0; i < TOTAL_RUNS; i++) {
graph = graphTest.generateGraph();
this.stopWatch();
int counter = 0;
for (final Vertex vertex : graph.getVertices()) {
counter++;
for (final Edge edge : vertex.getEdges(com.tinkerpop.blueprints.Direction.OUT)) {
counter++;
final Vertex vertex2 = edge.getVertex(com.tinkerpop.blueprints.Direction.IN);
counter++;
for (final Edge edge2 : vertex2.getEdges(com.tinkerpop.blueprints.Direction.OUT)) {
counter++;
final Vertex vertex3 = edge2.getVertex(com.tinkerpop.blueprints.Direction.IN);
counter++;
for (final Edge edge3 : vertex3.getEdges(com.tinkerpop.blueprints.Direction.OUT)) {
counter++;
edge3.getVertex(com.tinkerpop.blueprints.Direction.OUT);
counter++;
}
}
}
}
double currentTime = this.stopWatch();
totalTime = totalTime + currentTime;
BaseTest.printPerformance(graph.toString(), counter, "Neo4j2Graph elements touched", currentTime);
graph.shutdown();
}
BaseTest.printPerformance("Neo4j2Graph", 1, "Neo4j2Graph experiment average", totalTime / (double) TOTAL_RUNS);
}
Aggregations