use of ai.grakn.concept.RelationshipType in project grakn by graknlabs.
the class GraqlTest method testStatisticsMethods.
@Test
public void testStatisticsMethods() throws InvalidKBException {
try (GraknTx graph = session.open(GraknTxType.WRITE)) {
Label resourceTypeId = Label.of("my-resource");
AttributeType<Long> resource = graph.putAttributeType(resourceTypeId, AttributeType.DataType.LONG);
EntityType thingy = graph.putEntityType("thingy");
thingy.attribute(resource);
Entity theResourceOwner = thingy.addEntity();
Role resourceOwner = graph.getRole(Schema.ImplicitType.HAS_OWNER.getLabel(resourceTypeId).getValue());
Role resourceValue = graph.getRole(Schema.ImplicitType.HAS_VALUE.getLabel(resourceTypeId).getValue());
RelationshipType relationshipType = graph.getRelationshipType(Schema.ImplicitType.HAS.getLabel(resourceTypeId).getValue());
relationshipType.addRelationship().addRolePlayer(resourceOwner, theResourceOwner).addRolePlayer(resourceValue, resource.putAttribute(1L));
relationshipType.addRelationship().addRolePlayer(resourceOwner, theResourceOwner).addRolePlayer(resourceValue, resource.putAttribute(2L));
relationshipType.addRelationship().addRolePlayer(resourceOwner, theResourceOwner).addRolePlayer(resourceValue, resource.putAttribute(3L));
graph.commit();
}
try (GraknTx graph = session.open(GraknTxType.WRITE)) {
// use graql to compute various statistics
Optional<? extends Number> result = graph.graql().<SumQuery>parse("compute sum of my-resource;").execute();
assertEquals(Optional.of(6L), result);
result = graph.graql().<MinQuery>parse("compute min of my-resource;").execute();
assertEquals(Optional.of(1L), result);
result = graph.graql().<MaxQuery>parse("compute max of my-resource;").execute();
assertEquals(Optional.of(3L), result);
result = graph.graql().<MeanQuery>parse("compute mean of my-resource;").execute();
assert result.isPresent();
assertEquals(2.0, (Double) result.get(), 0.1);
result = graph.graql().<MedianQuery>parse("compute median of my-resource;").execute();
assertEquals(Optional.of(2L), result);
}
}
use of ai.grakn.concept.RelationshipType in project grakn by graknlabs.
the class AnalyticsTest method addSchemaAndEntities.
private void addSchemaAndEntities() throws InvalidKBException {
try (GraknTx graph = session.open(GraknTxType.WRITE)) {
EntityType entityType1 = graph.putEntityType(thingy);
EntityType entityType2 = graph.putEntityType(anotherThing);
Entity entity1 = entityType1.addEntity();
Entity entity2 = entityType1.addEntity();
Entity entity3 = entityType1.addEntity();
Entity entity4 = entityType2.addEntity();
entityId1 = entity1.getId().getValue();
entityId2 = entity2.getId().getValue();
entityId3 = entity3.getId().getValue();
entityId4 = entity4.getId().getValue();
Role role1 = graph.putRole("role1");
Role role2 = graph.putRole("role2");
entityType1.plays(role1).plays(role2);
entityType2.plays(role1).plays(role2);
RelationshipType relationshipType = graph.putRelationshipType(related).relates(role1).relates(role2);
relationId12 = relationshipType.addRelationship().addRolePlayer(role1, entity1).addRolePlayer(role2, entity2).getId().getValue();
relationId24 = relationshipType.addRelationship().addRolePlayer(role1, entity2).addRolePlayer(role2, entity4).getId().getValue();
graph.commit();
}
}
use of ai.grakn.concept.RelationshipType in project grakn by graknlabs.
the class AnalyticsTest method testNullResourceDoesNotBreakAnalytics.
@Test
public void testNullResourceDoesNotBreakAnalytics() throws InvalidKBException {
try (GraknTx graph = session.open(GraknTxType.WRITE)) {
// make slightly odd graph
Label resourceTypeId = Label.of("degree");
EntityType thingy = graph.putEntityType("thingy");
AttributeType<Long> attribute = graph.putAttributeType(resourceTypeId, AttributeType.DataType.LONG);
thingy.attribute(attribute);
Role degreeOwner = graph.getRole(Schema.ImplicitType.HAS_OWNER.getLabel(resourceTypeId).getValue());
Role degreeValue = graph.getRole(Schema.ImplicitType.HAS_VALUE.getLabel(resourceTypeId).getValue());
RelationshipType relationshipType = graph.putRelationshipType(Schema.ImplicitType.HAS.getLabel(resourceTypeId)).relates(degreeOwner).relates(degreeValue);
thingy.plays(degreeOwner);
Entity thisThing = thingy.addEntity();
relationshipType.addRelationship().addRolePlayer(degreeOwner, thisThing);
graph.commit();
}
// the null role-player caused analytics to fail at some stage
try (GraknTx graph = session.open(GraknTxType.READ)) {
graph.graql().compute().centrality().usingDegree().execute();
} catch (RuntimeException e) {
e.printStackTrace();
fail();
}
}
use of ai.grakn.concept.RelationshipType in project grakn by graknlabs.
the class CorenessTest method testDisconnectedCores.
@Test
public void testDisconnectedCores() {
try (GraknTx graph = session.open(GraknTxType.WRITE)) {
EntityType entityType1 = graph.putEntityType(thing);
EntityType entityType2 = graph.putEntityType(anotherThing);
Role role1 = graph.putRole("role1");
Role role2 = graph.putRole("role2");
RelationshipType relationshipType1 = graph.putRelationshipType(related).relates(role1).relates(role2);
Role role3 = graph.putRole("role3");
Role role4 = graph.putRole("role4");
RelationshipType relationshipType2 = graph.putRelationshipType(veryRelated).relates(role3).relates(role4);
entityType1.plays(role1).plays(role2).plays(role3).plays(role4);
entityType2.plays(role1).plays(role2).plays(role3).plays(role4);
Entity entity0 = entityType1.addEntity();
Entity entity1 = entityType1.addEntity();
Entity entity2 = entityType1.addEntity();
Entity entity3 = entityType1.addEntity();
Entity entity4 = entityType1.addEntity();
Entity entity5 = entityType1.addEntity();
Entity entity6 = entityType1.addEntity();
Entity entity7 = entityType1.addEntity();
Entity entity8 = entityType1.addEntity();
relationshipType1.addRelationship().addRolePlayer(role1, entity1).addRolePlayer(role2, entity2);
relationshipType1.addRelationship().addRolePlayer(role1, entity2).addRolePlayer(role2, entity3);
relationshipType1.addRelationship().addRolePlayer(role1, entity3).addRolePlayer(role2, entity4);
relationshipType1.addRelationship().addRolePlayer(role1, entity1).addRolePlayer(role2, entity3);
relationshipType1.addRelationship().addRolePlayer(role1, entity1).addRolePlayer(role2, entity4);
relationshipType1.addRelationship().addRolePlayer(role1, entity2).addRolePlayer(role2, entity4);
relationshipType1.addRelationship().addRolePlayer(role1, entity5).addRolePlayer(role2, entity6);
relationshipType2.addRelationship().addRolePlayer(role3, entity5).addRolePlayer(role4, entity7);
relationshipType2.addRelationship().addRolePlayer(role3, entity5).addRolePlayer(role4, entity8);
relationshipType2.addRelationship().addRolePlayer(role3, entity6).addRolePlayer(role4, entity7);
relationshipType2.addRelationship().addRolePlayer(role3, entity6).addRolePlayer(role4, entity8);
relationshipType2.addRelationship().addRolePlayer(role3, entity7).addRolePlayer(role4, entity8);
relationshipType1.addRelationship().addRolePlayer(role1, entity0).addRolePlayer(role2, entity1);
relationshipType1.addRelationship().addRolePlayer(role1, entity0).addRolePlayer(role2, entity8);
graph.commit();
}
Map<Long, Set<String>> result;
try (GraknTx graph = session.open(GraknTxType.READ)) {
result = graph.graql().compute().centrality().usingKCore().execute();
assertEquals(2, result.size());
assertEquals(8, result.get(3L).size());
assertEquals(1, result.get(2L).size());
result = graph.graql().compute().centrality().usingKCore().minK(3L).execute();
assertEquals(1, result.size());
assertEquals(8, result.get(3L).size());
}
}
use of ai.grakn.concept.RelationshipType in project grakn by graknlabs.
the class DegreeTest method testDegreesSimple.
@Test
public void testDegreesSimple() {
// create instances
EntityType thingy = tx.putEntityType("thingy");
EntityType anotherThing = tx.putEntityType("another");
ConceptId entity1 = thingy.addEntity().getId();
ConceptId entity2 = thingy.addEntity().getId();
ConceptId entity3 = thingy.addEntity().getId();
ConceptId entity4 = anotherThing.addEntity().getId();
Role role1 = tx.putRole("role1");
Role role2 = tx.putRole("role2");
thingy.plays(role1).plays(role2);
anotherThing.plays(role1).plays(role2);
RelationshipType related = tx.putRelationshipType("related").relates(role1).relates(role2);
// relate them
related.addRelationship().addRolePlayer(role1, tx.getConcept(entity1)).addRolePlayer(role2, tx.getConcept(entity2));
related.addRelationship().addRolePlayer(role1, tx.getConcept(entity2)).addRolePlayer(role2, tx.getConcept(entity3));
related.addRelationship().addRolePlayer(role1, tx.getConcept(entity2)).addRolePlayer(role2, tx.getConcept(entity4));
tx.commit();
tx = session.open(GraknTxType.READ);
Map<ConceptId, Long> correctDegrees = new HashMap<>();
correctDegrees.put(entity1, 1L);
correctDegrees.put(entity2, 3L);
correctDegrees.put(entity3, 1L);
correctDegrees.put(entity4, 1L);
// compute degrees
List<Long> list = new ArrayList<>(4);
long workerNumber = 4L;
if (GraknTestUtil.usingTinker())
workerNumber = 1L;
for (long i = 0L; i < workerNumber; i++) {
list.add(i);
}
tx.close();
Set<Map<Long, Set<String>>> result = list.parallelStream().map(i -> {
try (GraknTx graph = session.open(GraknTxType.READ)) {
return graph.graql().compute().centrality().usingDegree().execute();
}
}).collect(Collectors.toSet());
assertEquals(1, result.size());
Map<Long, Set<String>> degrees0 = result.iterator().next();
assertEquals(2, degrees0.size());
degrees0.forEach((key, value) -> value.forEach(id -> {
assertTrue(correctDegrees.containsKey(ConceptId.of(id)));
assertEquals(correctDegrees.get(ConceptId.of(id)), key);
}));
try (GraknTx graph = session.open(GraknTxType.READ)) {
Map<Long, Set<String>> degrees1 = graph.graql().compute().centrality().usingDegree().of("thingy").execute();
assertEquals(2, degrees1.size());
assertEquals(2, degrees1.get(1L).size());
assertEquals(1, degrees1.get(3L).size());
degrees1.forEach((key, value) -> value.forEach(id -> {
assertTrue(correctDegrees.containsKey(ConceptId.of(id)));
assertEquals(correctDegrees.get(ConceptId.of(id)), key);
}));
Map<Long, Set<String>> degrees2 = graph.graql().compute().centrality().usingDegree().of("thingy", "related").execute();
assertEquals(degrees1, degrees2);
degrees2 = graph.graql().compute().centrality().usingDegree().of().execute();
assertEquals(degrees0, degrees2);
// compute degrees on subgraph
Map<Long, Set<String>> degrees3 = graph.graql().compute().centrality().usingDegree().in("thingy", "related").execute();
assertEquals(degrees1, degrees3);
degrees3 = graph.graql().compute().centrality().usingDegree().of("thingy").in("related").execute();
assertEquals(degrees1, degrees3);
}
}
Aggregations