use of ai.grakn.concept.AttributeType in project grakn by graknlabs.
the class BenchmarkIT method loadRuleChainData.
private void loadRuleChainData(int N) {
final GraknClient graknClient = GraknClient.of(engine.uri());
String entityLabel = "genericEntity";
String attributeLabel = "index";
String baseRelationLabel = "relation1";
String genericRelationLabel = "relation";
String fromRoleLabel = "fromRole";
String toRoleLabel = "toRole";
// load ontology
try (GraknTx tx = session.open(GraknTxType.WRITE)) {
Role fromRole = tx.putRole(fromRoleLabel);
Role toRole = tx.putRole(toRoleLabel);
AttributeType<String> index = tx.putAttributeType(attributeLabel, AttributeType.DataType.STRING);
tx.putEntityType(entityLabel).plays(fromRole).plays(toRole).attribute(index);
// define N relation types
for (int i = 1; i <= N; i++) {
tx.putRelationshipType(genericRelationLabel + i).relates(fromRole).relates(toRole);
}
// define N rules
for (int i = 2; i <= N; i++) {
Var fromVar = Graql.var().asUserDefined();
Var intermedVar = Graql.var().asUserDefined();
Var toVar = Graql.var().asUserDefined();
VarPattern rulePattern = Graql.label("rule" + i).when(Graql.and(Graql.var().rel(Graql.label(fromRole.getLabel()), fromVar).rel(Graql.label(toRole.getLabel()), intermedVar).isa(baseRelationLabel), Graql.var().rel(Graql.label(fromRole.getLabel()), intermedVar).rel(Graql.label(toRole.getLabel()), toVar).isa(genericRelationLabel + (i - 1)))).then(Graql.and(Graql.var().rel(Graql.label(fromRole.getLabel()), fromVar).rel(Graql.label(toRole.getLabel()), toVar).isa(genericRelationLabel + i)));
tx.graql().define(rulePattern).execute();
}
tx.commit();
}
// insert N + 1 entities
loadEntities(entityLabel, N + 1, graknClient, keyspace);
// load initial relation instances
try (BatchExecutorClient loader = BatchExecutorClient.newBuilder().taskClient(graknClient).build()) {
try (GraknTx tx = session.open(GraknTxType.READ)) {
Var entityVar = var().asUserDefined();
ConceptId[] instances = tx.graql().match(entityVar.isa(entityLabel)).get().execute().stream().map(ans -> ans.get(entityVar).getId()).toArray(ConceptId[]::new);
RelationshipType baseRelation = tx.getRelationshipType(baseRelationLabel);
Role fromRole = tx.getRole(fromRoleLabel);
Role toRole = tx.getRole(toRoleLabel);
loader.add(Graql.insert(Graql.var().asUserDefined().has(attributeLabel, "first").id(instances[0]).admin().varPatterns()), keyspace).subscribe();
for (int i = 1; i < instances.length; i++) {
Var fromRolePlayer = Graql.var();
Var toRolePlayer = Graql.var();
Pattern relationInsert = Graql.var().rel(Graql.label(fromRole.getLabel()), fromRolePlayer).rel(Graql.label(toRole.getLabel()), toRolePlayer).isa(Graql.label(baseRelation.getLabel())).and(fromRolePlayer.asUserDefined().id(instances[i - 1])).and(toRolePlayer.asUserDefined().id(instances[i]));
loader.add(Graql.insert(relationInsert.admin().varPatterns()), keyspace).subscribe();
Pattern resourceInsert = Graql.var().asUserDefined().has(attributeLabel, String.valueOf(i)).id(instances[i]);
loader.add(Graql.insert(resourceInsert.admin().varPatterns()), keyspace).subscribe();
}
}
}
}
use of ai.grakn.concept.AttributeType in project grakn by graknlabs.
the class GraknTxPutPropertyTest method whenCallingPutResourceTypeWithThePropertiesOfAnExistingResourceType_ItReturnsThatType.
@Property
public void whenCallingPutResourceTypeWithThePropertiesOfAnExistingResourceType_ItReturnsThatType(@Open GraknTx graph, @FromTx AttributeType<?> attributeType) {
assumeFalse(attributeType.equals(graph.admin().getMetaAttributeType()));
Label label = attributeType.getLabel();
AttributeType.DataType<?> dataType = attributeType.getDataType();
AttributeType<?> newType = graph.putAttributeType(label, dataType);
assertEquals(attributeType, newType);
}
use of ai.grakn.concept.AttributeType in project grakn by graknlabs.
the class CSVMigratorTest method multipleEntitiesInOneFileTest.
// Ignored because this feature is not yet supported
@Ignore
@Test
public void multipleEntitiesInOneFileTest() throws IOException {
load(factory, getFile("csv", "single-file/schema.gql"));
// Re Open Transaction
GraknTx graph = factory.open(GraknTxType.WRITE);
assertNotNull(graph.getEntityType("make"));
String template = getFileAsString("csv", "single-file/template.gql");
declareAndLoad(template, "single-file/data/cars.csv", defaultMigrator);
// test
Stream<Entity> makes = graph.getEntityType("make").instances();
assertEquals(3, makes.count());
Stream<Entity> models = graph.getEntityType("model").instances();
assertEquals(4, models.count());
// test empty value not created
AttributeType description = graph.getAttributeType("description");
Entity venture = graph.getConcept(ConceptId.of("Venture"));
assertEquals(1, venture.attributes(description).count());
Entity ventureLarge = graph.getConcept(ConceptId.of("Venture Large"));
assertEquals(0, ventureLarge.attributes(description).count());
}
use of ai.grakn.concept.AttributeType in project grakn by graknlabs.
the class GraknTxTest method whenGettingTypesByName_ReturnTypes.
@Test
public void whenGettingTypesByName_ReturnTypes() {
String entityTypeLabel = "My Entity Type";
String relationTypeLabel = "My Relationship Type";
String roleTypeLabel = "My Role Type";
String resourceTypeLabel = "My Attribute Type";
String ruleTypeLabel = "My Rule Type";
assertNull(tx.getEntityType(entityTypeLabel));
assertNull(tx.getRelationshipType(relationTypeLabel));
assertNull(tx.getRole(roleTypeLabel));
assertNull(tx.getAttributeType(resourceTypeLabel));
assertNull(tx.getRule(ruleTypeLabel));
EntityType entityType = tx.putEntityType(entityTypeLabel);
RelationshipType relationshipType = tx.putRelationshipType(relationTypeLabel);
Role role = tx.putRole(roleTypeLabel);
AttributeType attributeType = tx.putAttributeType(resourceTypeLabel, AttributeType.DataType.STRING);
assertEquals(entityType, tx.getEntityType(entityTypeLabel));
assertEquals(relationshipType, tx.getRelationshipType(relationTypeLabel));
assertEquals(role, tx.getRole(roleTypeLabel));
assertEquals(attributeType, tx.getAttributeType(resourceTypeLabel));
}
use of ai.grakn.concept.AttributeType in project grakn by graknlabs.
the class DefineQueryTest method whenSpecifyingExistingTypeWithIncorrectDataType_Throw.
@Test
public void whenSpecifyingExistingTypeWithIncorrectDataType_Throw() {
AttributeType name = movies.tx().getAttributeType("name");
exception.expect(GraqlQueryException.class);
exception.expectMessage(GraqlQueryException.insertPropertyOnExistingConcept("datatype", BOOLEAN, name).getMessage());
movies.tx().graql().define(label("name").datatype(BOOLEAN)).execute();
}
Aggregations