@Override protected void buildRelations() { //Enemy(Nono, America) isEnemyOf.create() .assign(enemySource, Nono) .assign(enemyTarget, America); //Owns(Nono, Missile) owns.create() .assign(owner, Nono) .assign(ownedItem, Tomahawk); //isPaidBy(West, Nono) isPaidBy.create() .assign(payee, colonelWest) .assign(payer, Nono); }
.assign(geoEntity, Poland) .assign(entityLocation, Europe); .assign(geoEntity, Masovia) .assign(entityLocation, Poland); .assign(geoEntity, Warsaw) .assign(entityLocation, Masovia); .assign(geoEntity, PW) .assign(entityLocation, Warsaw); .assign(geoEntity, UW) .assign(entityLocation, Warsaw); .assign(geoEntity, Silesia) .assign(entityLocation, Poland); .assign(geoEntity, Wroclaw) .assign(entityLocation, Silesia); .assign(geoEntity, Imperial) .assign(entityLocation, London); isLocatedIn.create() .assign(geoEntity, UCL) .assign(entityLocation, London); isLocatedIn.create() .assign(geoEntity, London) .assign(entityLocation, GreaterLondon);
.assign(arcFrom, getInstance(graph, "a0")) .assign(arcTo, getInstance(graph, "a0,0")); if (j < n - 1) { arc.create() .assign(arcFrom, getInstance(graph, "a" + i + "," + j)) .assign(arcTo, getInstance(graph, "a" + i + "," + (j + 1))); .assign(arcFrom, getInstance(graph, "a" + i + "," + j)) .assign(arcTo, getInstance(graph, "a" + (i + 1) + "," + j));
private void buildExtensionalDB(GraknTx graph, int n) { Role qfrom = graph.getRole("Q-from"); Role qto = graph.getRole("Q-to"); EntityType aEntity = graph.getEntityType("a-entity"); RelationshipType q = graph.getRelationshipType("Q"); Thing aInst = putEntityWithResource(graph, "a", graph.getEntityType("entity2"), key); ConceptId[] aInstanceIds = new ConceptId[n]; for(int i = 0 ; i < n ;i++) { aInstanceIds[i] = putEntityWithResource(graph, "a" + i, aEntity, key).id(); } q.create() .assign(qfrom, aInst) .assign(qto, graph.getConcept(aInstanceIds[0])); for(int i = 0 ; i < n - 1 ; i++) { q.create() .assign(qfrom, graph.getConcept(aInstanceIds[i])) .assign(qto, graph.getConcept(aInstanceIds[i+1])); } } }
.assign(Qfrom, aInst) .assign(Qto, graph.getConcept(aInstancesIds[1][1])); if ( i < n ) { Q.create() .assign(Qfrom, graph.getConcept(aInstancesIds[i][j])) .assign(Qto, graph.getConcept(aInstancesIds[i+1][j])); .assign(Qfrom, graph.getConcept(aInstancesIds[i][j])) .assign(Qto, graph.getConcept(aInstancesIds[i][j+1]));
.assign(qfrom, aInst) .assign(qto, graph.getConcept(aInstanceIds[0][0])); if ( i < n - 1 ) { q.create() .assign(qfrom, graph.getConcept(aInstanceIds[i][j])) .assign(qto, graph.getConcept(aInstanceIds[i+1][j])); .assign(qfrom, graph.getConcept(aInstanceIds[i][j])) .assign(qto, graph.getConcept(aInstanceIds[i][j+1]));
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.create() .assign(qfrom, getInstance(graph, "a0")) .assign(qto, getInstance(graph, "b1" + "," + j)); for(int i = 1 ; i <= m ;i++) { q.create() .assign(qfrom, getInstance(graph, "b" + i + "," + j)) .assign(qto, getInstance(graph, "b" + (i + 1) + "," + j)); } } } }
.assign(Pfrom, graph.getConcept(cId)) .assign(Pto, graph.getConcept(dId)); .assign(Rfrom, graph.getConcept(dId)) .assign(Rto, graph.getConcept(eId)); .assign(qfrom, graph.getConcept(eId)) .assign(qto, graph.getConcept(aInstancesIds[0])); .assign(Pfrom, graph.getConcept(bInstancesIds[i])) .assign(Pto, graph.getConcept(cId)); p.create() .assign(Pfrom, graph.getConcept(cId)) .assign(Pto, graph.getConcept(bInstancesIds[i])); q.create() .assign(qfrom, graph.getConcept(aInstancesIds[i])) .assign(qto, graph.getConcept(bInstancesIds[i])); q.create() .assign(qfrom, graph.getConcept(bInstancesIds[i])) .assign(qto, graph.getConcept(aInstancesIds[i+1]));
.assign(R1from, graph.getConcept(aInstancesIds[i])) .assign(R1to, graph.getConcept(aInstancesIds[i + 1])); .assign(R2from, graph.getConcept(aInstancesIds[0])) .assign(R2to, graph.getConcept(bInstancesIds[1][j])); R2.create() .assign(R2from, graph.getConcept(bInstancesIds[m-1][j])) .assign(R2to, graph.getConcept(aInstancesIds[m])); for (int i = 1; i < m - 1; i++) { R2.create() .assign(R2from, graph.getConcept(bInstancesIds[i][j])) .assign(R2to, graph.getConcept(bInstancesIds[i + 1][j]));
/** * Add a roleplayer to the given {@link Relationship} * @param relationship the concept representing the {@link Relationship} * @param relationPlayer a casting between a role type and role player */ private void addRoleplayer(QueryOperationExecutor executor, Relationship relationship, RelationPlayer relationPlayer) { VarPatternAdmin roleVar = getRole(relationPlayer); Role role = executor.get(roleVar.var()).asRole(); Thing roleplayer = executor.get(relationPlayer.getRolePlayer().var()).asThing(); relationship.assign(role, roleplayer); }
@Override public Stream<ConceptMap> materialise(){ RelationshipType relationType = getSchemaConcept().asRelationshipType(); Multimap<Role, Var> roleVarMap = getRoleVarMap(); ConceptMap substitution = getParentQuery().getSubstitution(); //if the relation already exists, only assign roleplayers, otherwise create a new relation Relationship relationship = substitution.containsVar(getVarName())? substitution.get(getVarName()).asRelationship() : RelationshipTypeImpl.from(relationType).addRelationshipInferred(); roleVarMap.asMap().forEach((key, value) -> value.forEach(var -> relationship.assign(key, substitution.get(var).asThing()))); ConceptMap relationSub = getRoleSubstitution().merge( getVarName().isUserDefinedName()? new ConceptMapImpl(ImmutableMap.of(getVarName(), relationship)) : new ConceptMapImpl() ); return Stream.of(substitution.merge(relationSub)); }