Search in sources :

Example 16 with Role

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);
}
Also used : Role(ai.grakn.concept.Role) Before(org.junit.Before)

Example 17 with Role

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);
}
Also used : Role(ai.grakn.concept.Role)

Example 18 with Role

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));
        }
    }
}
Also used : Role(ai.grakn.concept.Role) EntityType(ai.grakn.concept.EntityType) RelationshipType(ai.grakn.concept.RelationshipType)

Example 19 with Role

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());
}
Also used : Role(ai.grakn.concept.Role) EntityType(ai.grakn.concept.EntityType) Entity(ai.grakn.concept.Entity) RelationshipType(ai.grakn.concept.RelationshipType) Test(org.junit.Test)

Example 20 with Role

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));
}
Also used : Role(ai.grakn.concept.Role) ArrayListMultimap(com.google.common.collect.ArrayListMultimap) Pair(ai.grakn.graql.internal.reasoner.utils.Pair) Atom(ai.grakn.graql.internal.reasoner.atom.Atom) VarPattern(ai.grakn.graql.VarPattern) RelationshipProperty(ai.grakn.graql.internal.pattern.property.RelationshipProperty) RelationshipTypeImpl(ai.grakn.kb.internal.concept.RelationshipTypeImpl) Graql(ai.grakn.graql.Graql) ReasonerUtils.top(ai.grakn.graql.internal.reasoner.utils.ReasonerUtils.top) Type(ai.grakn.concept.Type) MultiUnifierImpl(ai.grakn.graql.internal.reasoner.MultiUnifierImpl) EntityType(ai.grakn.concept.EntityType) HashMultimap(com.google.common.collect.HashMultimap) Label(ai.grakn.concept.Label) RelationshipType(ai.grakn.concept.RelationshipType) GraknTx(ai.grakn.GraknTx) Map(java.util.Map) ReasonerUtils.supers(ai.grakn.graql.internal.reasoner.utils.ReasonerUtils.supers) RoleConverter(ai.grakn.graql.internal.reasoner.utils.conversion.RoleConverter) ConceptId(ai.grakn.concept.ConceptId) Collectors.toSet(java.util.stream.Collectors.toSet) ImmutableSet(com.google.common.collect.ImmutableSet) ValuePredicate(ai.grakn.graql.internal.reasoner.atom.predicate.ValuePredicate) ImmutableMap(com.google.common.collect.ImmutableMap) Collection(java.util.Collection) Set(java.util.Set) IdPredicate(ai.grakn.graql.internal.reasoner.atom.predicate.IdPredicate) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) Objects(java.util.Objects) Atomic(ai.grakn.graql.admin.Atomic) List(java.util.List) Stream(java.util.stream.Stream) Var(ai.grakn.graql.Var) AutoValue(com.google.auto.value.AutoValue) ReasonerUtils.compatibleRoles(ai.grakn.graql.internal.reasoner.utils.ReasonerUtils.compatibleRoles) UnifierType(ai.grakn.graql.internal.reasoner.UnifierType) Iterables(com.google.common.collect.Iterables) ReasonerQueryImpl(ai.grakn.graql.internal.reasoner.query.ReasonerQueryImpl) Role(ai.grakn.concept.Role) Concept(ai.grakn.concept.Concept) SchemaConcept(ai.grakn.concept.SchemaConcept) ReasonerUtils.compatibleRelationTypesWithRoles(ai.grakn.graql.internal.reasoner.utils.ReasonerUtils.compatibleRelationTypesWithRoles) HashMap(java.util.HashMap) Answer(ai.grakn.graql.admin.Answer) Multimap(com.google.common.collect.Multimap) Rule(ai.grakn.concept.Rule) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) ReasonerUtils.multimapIntersection(ai.grakn.graql.internal.reasoner.utils.ReasonerUtils.multimapIntersection) ImmutableList(com.google.common.collect.ImmutableList) CommonUtil(ai.grakn.util.CommonUtil) Predicate(ai.grakn.graql.internal.reasoner.atom.predicate.Predicate) Relationship(ai.grakn.concept.Relationship) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) TypeConverter(ai.grakn.graql.internal.reasoner.utils.conversion.TypeConverter) Nullable(javax.annotation.Nullable) ErrorMessage(ai.grakn.util.ErrorMessage) GraqlQueryException(ai.grakn.exception.GraqlQueryException) Iterator(java.util.Iterator) Memoized(com.google.auto.value.extension.memoized.Memoized) MultiUnifier(ai.grakn.graql.admin.MultiUnifier) UnifierImpl(ai.grakn.graql.internal.reasoner.UnifierImpl) ReasonerUtils(ai.grakn.graql.internal.reasoner.utils.ReasonerUtils) VarProperty(ai.grakn.graql.admin.VarProperty) ReasonerQuery(ai.grakn.graql.admin.ReasonerQuery) IsaProperty(ai.grakn.graql.internal.pattern.property.IsaProperty) UnifierComparison(ai.grakn.graql.admin.UnifierComparison) RelationPlayer(ai.grakn.graql.admin.RelationPlayer) VarPatternAdmin(ai.grakn.graql.admin.VarPatternAdmin) Schema(ai.grakn.util.Schema) Pattern(ai.grakn.graql.Pattern) Comparator(java.util.Comparator) Unifier(ai.grakn.graql.admin.Unifier) Answer(ai.grakn.graql.admin.Answer) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) QueryAnswer(ai.grakn.graql.internal.query.QueryAnswer) Var(ai.grakn.graql.Var) Relationship(ai.grakn.concept.Relationship) RelationshipType(ai.grakn.concept.RelationshipType)

Aggregations

Role (ai.grakn.concept.Role)189 Test (org.junit.Test)124 RelationshipType (ai.grakn.concept.RelationshipType)114 EntityType (ai.grakn.concept.EntityType)92 Entity (ai.grakn.concept.Entity)55 GraknTx (ai.grakn.GraknTx)48 Relationship (ai.grakn.concept.Relationship)37 Set (java.util.Set)36 ConceptId (ai.grakn.concept.ConceptId)33 Label (ai.grakn.concept.Label)33 Thing (ai.grakn.concept.Thing)32 HashSet (java.util.HashSet)31 Var (ai.grakn.graql.Var)25 AttributeType (ai.grakn.concept.AttributeType)21 Concept (ai.grakn.concept.Concept)20 Schema (ai.grakn.util.Schema)17 Collectors (java.util.stream.Collectors)17 Attribute (ai.grakn.concept.Attribute)16 SchemaConcept (ai.grakn.concept.SchemaConcept)16 Type (ai.grakn.concept.Type)16