@Test public void testGettingUndefinedEdgeLabelTTL() { if (!features.hasCellTTL()) { return; } // getTTL should return a null duration on an extant type without a TTL mgmt.makeEdgeLabel("likes").make(); mgmt.commit(); graph.tx().rollback(); // Check getTTL on edge label mgmt = graph.openManagement(); assertEquals(Duration.ZERO, mgmt.getTTL(mgmt.getEdgeLabel("likes"))); mgmt.rollback(); }
@Test public void testIndexShouldNotBeEnabledForExistingPropertyKeyAndConstrainedToExistingEdgeLabel() { mgmt.makePropertyKey("alreadyExistingProperty").dataType(String.class).cardinality(Cardinality.SINGLE).make(); mgmt.makeEdgeLabel("alreadyExistingLabel").make(); finishSchema(); PropertyKey existingPropertyKey = mgmt.getPropertyKey("alreadyExistingProperty"); EdgeLabel existingLabel = mgmt.getEdgeLabel("alreadyExistingLabel"); mgmt.buildIndex("newIndex", Edge.class).addKey(existingPropertyKey).indexOnly(existingLabel).buildCompositeIndex(); finishSchema(); assertNotEquals(SchemaStatus.ENABLED, mgmt.getGraphIndex("newIndex").getIndexStatus(existingPropertyKey)); }
mgmt.setTTL(mgmt.getEdgeLabel("likes"), Duration.ZERO); mgmt.commit();
@Test public void testSupportChangeNameOfEdgeAndUpdateConnections() { clopen(option(AUTO_TYPE), "none", option(SCHEMA_CONSTRAINTS), true); VertexLabel user = mgmt.makeVertexLabel("V1").make(); VertexLabel company = mgmt.makeVertexLabel("V2").make(); EdgeLabel edge = mgmt.makeEdgeLabel("E1").make(); mgmt.addConnection(edge, user, company); finishSchema(); JanusGraphVertex v1 = tx.addVertex("V1"); JanusGraphVertex v2 = tx.addVertex("V2"); v1.addEdge("E1", v2); newTx(); edge = mgmt.getEdgeLabel("E1"); mgmt.changeName(edge, "E2"); mgmt.commit(); JanusGraphVertex v3 = tx.addVertex("V1"); JanusGraphVertex v4 = tx.addVertex("V2"); v3.addEdge("E2", v4); }
knows = mgmt.getEdgeLabel("knows"); mgmt.changeName(knows, "know"); assertEquals("know", knows.name()); knows = mgmt.getEdgeLabel("know");
assertFalse(mgmt.containsRelationType("bla")); assertNull(mgmt.getPropertyKey("bla")); assertNull(mgmt.getEdgeLabel("bla")); assertNotNull(mgmt.getPropertyKey("weight")); assertNotNull(mgmt.getEdgeLabel("connect")); assertTrue(weight.isPropertyKey()); assertFalse(weight.isEdgeLabel()); name = mgmt.getPropertyKey("name"); value = mgmt.getPropertyKey("value"); friend = mgmt.getEdgeLabel("friend"); link = mgmt.getEdgeLabel("link"); connect = mgmt.getEdgeLabel("connect"); parent = mgmt.getEdgeLabel("parent"); child = mgmt.getEdgeLabel("child"); spouse = mgmt.getEdgeLabel("spouse"); person = mgmt.getVertexLabel("person"); tag = mgmt.getVertexLabel("tag"); assertFalse(mgmt.containsRelationType("bla")); assertNull(mgmt.getPropertyKey("bla")); assertNull(mgmt.getEdgeLabel("bla")); assertNotNull(mgmt.getPropertyKey("weight")); assertNotNull(mgmt.getEdgeLabel("connect")); assertTrue(weight.isPropertyKey()); assertFalse(weight.isEdgeLabel());
@Override public boolean edgeIndexExist(String label, String indexName) { EdgeLabel edgeLabel = management.getEdgeLabel(label); return edgeLabel != null && management.getRelationIndex(edgeLabel, indexName) != null; }
connect = mgmt.getEdgeLabel("connect"); child = mgmt.getEdgeLabel("child"); link = mgmt.getEdgeLabel("link");
@Override public AtlasEdgeLabel getEdgeLabel(String label) { return GraphDbObjectFactory.createEdgeLabel(management.getEdgeLabel(label)); }
time = mgmt.getPropertyKey("time"); name = mgmt.getPropertyKey("name"); friend = mgmt.getEdgeLabel("friend"); mgmt.buildPropertyIndex(sensor, "byTime", decr, time); mgmt.buildEdgeIndex(friend, "byTime", Direction.OUT, decr, time);
private static void makeIndicesVertexCentric(JanusGraphManagement management){ ResourceBundle keys = ResourceBundle.getBundle("indices-edges"); Set<String> edgeLabels = keys.keySet(); for(String edgeLabel : edgeLabels){ String[] propertyKeyStrings = keys.getString(edgeLabel).split(","); //Get all the property keys we need Set<PropertyKey> propertyKeys = stream(propertyKeyStrings).map(keyId ->{ PropertyKey key = management.getPropertyKey(keyId); if (key == null) { throw new RuntimeException("Trying to create edge index on label [" + edgeLabel + "] but the property [" + keyId + "] does not exist"); } return key; }).collect(Collectors.toSet()); //Get the edge and indexing information RelationType relationType = management.getRelationType(edgeLabel); EdgeLabel label = management.getEdgeLabel(edgeLabel); //Create index on each property key for (PropertyKey key : propertyKeys) { if (management.getRelationIndex(relationType, edgeLabel + "by" + key.name()) == null) { management.buildEdgeIndex(label, edgeLabel + "by" + key.name(), Direction.BOTH, Order.decr, key); } } //Create index on all property keys String propertyKeyId = propertyKeys.stream().map(Namifiable::name).collect(Collectors.joining("_")); if (management.getRelationIndex(relationType, edgeLabel + "by" + propertyKeyId) == null) { PropertyKey [] allKeys = propertyKeys.toArray(new PropertyKey[propertyKeys.size()]); management.buildEdgeIndex(label, edgeLabel + "by" + propertyKeyId, Direction.BOTH, Order.decr, allKeys); } } }
private static void makeEdgeLabels(JanusGraphManagement management){ for (Schema.EdgeLabel edgeLabel : Schema.EdgeLabel.values()) { EdgeLabel label = management.getEdgeLabel(edgeLabel.getLabel()); if(label == null) { management.makeEdgeLabel(edgeLabel.getLabel()).make(); } } }
@Override public void createEdgeIndex(String label, String indexName, AtlasEdgeDirection edgeDirection, List<AtlasPropertyKey> propertyKeys) { EdgeLabel edgeLabel = management.getEdgeLabel(label); if (edgeLabel == null) { edgeLabel = management.makeEdgeLabel(label).make(); } Direction direction = AtlasJanusObjectFactory.createDirection(edgeDirection); PropertyKey[] keys = AtlasJanusObjectFactory.createPropertyKeys(propertyKeys); if (management.getRelationIndex(edgeLabel, indexName) == null) { management.buildEdgeIndex(edgeLabel, indexName, direction, keys); } }