use of ai.grakn.concept.Role in project grakn by graknlabs.
the class SchemaMutationTest method setup.
@Before
public void setup() throws InvalidKBException {
husband = tx.putRole("Husband");
wife = tx.putRole("Wife");
driver = tx.putRole("Driver");
Role driven = tx.putRole("Driven");
marriage = tx.putRelationshipType("marriage").relates(husband).relates(wife);
tx.putRelationshipType("car being driven by").relates(driven).relates(driver);
person = tx.putEntityType("Person").plays(husband).plays(wife);
man = tx.putEntityType("Man").sup(person);
woman = tx.putEntityType("Woman").sup(person);
car = tx.putEntityType("Car");
alice = woman.addEntity();
bob = man.addEntity();
marriage.addRelationship().addRolePlayer(wife, alice).addRolePlayer(husband, bob);
tx.commit();
tx = EmbeddedGraknSession.create(tx.keyspace(), Grakn.IN_MEMORY).open(GraknTxType.WRITE);
}
use of ai.grakn.concept.Role in project grakn by graknlabs.
the class PathTreeSymmetricKB method buildExtensionalDB.
@Override
protected void buildExtensionalDB(GraknTx tx, int n, int children) {
Role coordinate = tx.getRole("coordinate");
buildTree(tx, coordinate, coordinate, n, children);
}
use of ai.grakn.concept.Role in project grakn by graknlabs.
the class TailRecursionKB method buildExtensionalDB.
private void buildExtensionalDB(GraknTx graph, int n, int m) {
Role qfrom = graph.getRole("Q-from");
Role qto = graph.getRole("Q-to");
EntityType aEntity = graph.getEntityType("a-entity");
EntityType bEntity = graph.getEntityType("b-entity");
RelationshipType q = graph.getRelationshipType("Q");
putEntityWithResource(graph, "a0", aEntity, key);
for (int i = 1; i <= m + 1; i++) {
for (int j = 1; j <= n; j++) {
putEntityWithResource(graph, "b" + i + "," + j, bEntity, key);
}
}
for (int j = 1; j <= n; j++) {
q.addRelationship().addRolePlayer(qfrom, getInstance(graph, "a0")).addRolePlayer(qto, getInstance(graph, "b1" + "," + j));
for (int i = 1; i <= m; i++) {
q.addRelationship().addRolePlayer(qfrom, getInstance(graph, "b" + i + "," + j)).addRolePlayer(qto, getInstance(graph, "b" + (i + 1) + "," + j));
}
}
}
use of ai.grakn.concept.Role in project grakn by graknlabs.
the class TxCacheTest method whenClosingTransaction_EnsureTransactionCacheIsEmpty.
@Test
public void whenClosingTransaction_EnsureTransactionCacheIsEmpty() {
TxCache cache = tx.txCache();
// Load some sample data
AttributeType<String> attributeType = tx.putAttributeType("Attribute Type", AttributeType.DataType.STRING);
Role role1 = tx.putRole("role 1");
Role role2 = tx.putRole("role 2");
EntityType entityType = tx.putEntityType("My Type").plays(role1).plays(role2).attribute(attributeType);
RelationshipType relationshipType = tx.putRelationshipType("My Relationship Type").relates(role1).relates(role2);
Entity e1 = entityType.addEntity();
Entity e2 = entityType.addEntity();
Attribute<String> r1 = attributeType.putAttribute("test");
e1.attribute(r1);
relationshipType.addRelationship().addRolePlayer(role1, e1).addRolePlayer(role2, e2);
// Check the caches are not empty
assertThat(cache.getConceptCache().keySet(), not(empty()));
assertThat(cache.getSchemaConceptCache().keySet(), not(empty()));
assertThat(cache.getLabelCache().keySet(), not(empty()));
assertThat(cache.getShardingCount().keySet(), not(empty()));
assertThat(cache.getModifiedCastings(), not(empty()));
// Close the transaction
tx.commit();
// Check the caches are empty
assertThat(cache.getConceptCache().keySet(), empty());
assertThat(cache.getSchemaConceptCache().keySet(), empty());
assertThat(cache.getLabelCache().keySet(), empty());
assertThat(cache.getShardingCount().keySet(), empty());
assertThat(cache.getModifiedThings(), empty());
assertThat(cache.getModifiedRoles(), empty());
assertThat(cache.getModifiedRelationshipTypes(), empty());
assertThat(cache.getModifiedRules(), empty());
assertThat(cache.getModifiedCastings(), empty());
}
use of ai.grakn.concept.Role in project grakn by graknlabs.
the class RelationshipAtom method materialise.
@Override
public Stream<Answer> materialise() {
RelationshipType relationType = getSchemaConcept().asRelationshipType();
Multimap<Role, Var> roleVarMap = getRoleVarMap();
Answer substitution = getParentQuery().getSubstitution();
Relationship relationship = RelationshipTypeImpl.from(relationType).addRelationshipInferred();
roleVarMap.asMap().forEach((key, value) -> value.forEach(var -> relationship.addRolePlayer(key, substitution.get(var).asThing())));
Answer relationSub = getRoleSubstitution().merge(getVarName().isUserDefinedName() ? new QueryAnswer(ImmutableMap.of(getVarName(), relationship)) : new QueryAnswer());
return Stream.of(substitution.merge(relationSub));
}
Aggregations