Search in sources :

Example 81 with EntityType

use of ai.grakn.concept.EntityType in project grakn by graknlabs.

the class ShortestPathTest method testResourceVerticesAndEdges.

@Test
public void testResourceVerticesAndEdges() {
    ConceptId idPerson1;
    ConceptId idPerson2;
    ConceptId idPerson3;
    ConceptId idPower1;
    ConceptId idPower2;
    ConceptId idPower3;
    ConceptId idRelationPerson1Power1;
    ConceptId idRelationPerson2Power2;
    ConceptId idRelationPerson1Person3;
    List<ConceptId> pathPerson2Power1 = new ArrayList<>();
    List<ConceptId> pathPower3Power1 = new ArrayList<>();
    List<ConceptId> pathPerson3Power3 = new ArrayList<>();
    try (GraknTx tx = session.open(GraknTxType.WRITE)) {
        EntityType person = tx.putEntityType("person");
        AttributeType<Long> power = tx.putAttributeType("power", AttributeType.DataType.LONG);
        person.attribute(power);
        // manually construct the attribute relation
        Role resourceOwner = tx.getRole(Schema.ImplicitType.HAS_OWNER.getLabel(Label.of("power")).getValue());
        Role resourceValue = tx.getRole(Schema.ImplicitType.HAS_VALUE.getLabel(Label.of("power")).getValue());
        RelationshipType relationType = tx.getRelationshipType(Schema.ImplicitType.HAS.getLabel(Label.of("power")).getValue());
        Entity person1 = person.addEntity();
        idPerson1 = person1.getId();
        Entity person2 = person.addEntity();
        idPerson2 = person2.getId();
        Entity person3 = person.addEntity();
        idPerson3 = person3.getId();
        Attribute power1 = power.putAttribute(1L);
        idPower1 = power1.getId();
        Attribute power2 = power.putAttribute(2L);
        idPower2 = power2.getId();
        Attribute power3 = power.putAttribute(3L);
        idPower3 = power3.getId();
        assert relationType != null;
        idRelationPerson1Power1 = relationType.addRelationship().addRolePlayer(resourceOwner, person1).addRolePlayer(resourceValue, power1).getId();
        idRelationPerson2Power2 = relationType.addRelationship().addRolePlayer(resourceOwner, person2).addRolePlayer(resourceValue, power2).getId();
        // add implicit resource relationships as well
        person.attribute(power);
        person1.attribute(power2);
        person3.attribute(power3);
        // finally add a relation between persons to make it more interesting
        Role role1 = tx.putRole("role1");
        Role role2 = tx.putRole("role2");
        person.plays(role1).plays(role2);
        RelationshipType relationTypePerson = tx.putRelationshipType(related).relates(role1).relates(role2);
        idRelationPerson1Person3 = relationTypePerson.addRelationship().addRolePlayer(role1, person1).addRolePlayer(role2, person3).getId();
        tx.commit();
    }
    try (GraknTx graph = session.open(GraknTxType.READ)) {
        List<List<Concept>> allPaths;
        // Path from power3 to power3
        pathPerson3Power3.add(idPerson3);
        if (null != getResourceEdgeId(graph, idPower3, idPerson3)) {
            pathPerson3Power3.add(getResourceEdgeId(graph, idPower3, idPerson3));
        }
        pathPerson3Power3.add(idPower3);
        allPaths = graph.graql().compute().paths().from(idPerson3).to(idPower3).includeAttribute().execute();
        assertEquals(1, allPaths.size());
        checkPathsAreEqual(pathPerson3Power3, allPaths.get(0));
        // Path from person2 to power1
        pathPerson2Power1.add(idPerson2);
        pathPerson2Power1.add(idRelationPerson2Power2);
        pathPerson2Power1.add(idPower2);
        if (null != getResourceEdgeId(graph, idPerson1, idPower2)) {
            pathPerson2Power1.add(getResourceEdgeId(graph, idPerson1, idPower2));
        }
        pathPerson2Power1.add(idPerson1);
        pathPerson2Power1.add(idRelationPerson1Power1);
        pathPerson2Power1.add(idPower1);
        allPaths = graph.graql().compute().paths().from(idPerson2).to(idPower1).includeAttribute().execute();
        assertEquals(1, allPaths.size());
        checkPathsAreEqual(pathPerson2Power1, allPaths.get(0));
        // Path from power3 to power1
        pathPower3Power1.add(idPower3);
        if (null != getResourceEdgeId(graph, idPower3, idPerson3)) {
            pathPower3Power1.add(getResourceEdgeId(graph, idPower3, idPerson3));
        }
        pathPower3Power1.add(idPerson3);
        pathPower3Power1.add(idRelationPerson1Person3);
        pathPower3Power1.add(idPerson1);
        pathPower3Power1.add(idRelationPerson1Power1);
        pathPower3Power1.add(idPower1);
        allPaths = graph.graql().compute().paths().includeAttribute().from(idPower3).to(idPower1).execute();
        assertEquals(1, allPaths.size());
        checkPathsAreEqual(pathPower3Power1, allPaths.get(0));
    }
}
Also used : Entity(ai.grakn.concept.Entity) Attribute(ai.grakn.concept.Attribute) ArrayList(java.util.ArrayList) RelationshipType(ai.grakn.concept.RelationshipType) ConceptId(ai.grakn.concept.ConceptId) EntityType(ai.grakn.concept.EntityType) Role(ai.grakn.concept.Role) GraknTx(ai.grakn.GraknTx) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 82 with EntityType

use of ai.grakn.concept.EntityType in project grakn by graknlabs.

the class StatisticsTest method testHasResourceVerticesAndEdges.

@Test
public void testHasResourceVerticesAndEdges() {
    try (GraknTx tx = session.open(GraknTxType.WRITE)) {
        // manually construct the relation type and instance
        AttributeType<Long> power = tx.putAttributeType("power", AttributeType.DataType.LONG);
        EntityType person = tx.putEntityType("person").attribute(power);
        Role resourceOwner = tx.getRole(Schema.ImplicitType.HAS_OWNER.getLabel(Label.of("power")).getValue());
        Role resourceValue = tx.getRole(Schema.ImplicitType.HAS_VALUE.getLabel(Label.of("power")).getValue());
        person.attribute(power);
        Entity person1 = person.addEntity();
        Entity person2 = person.addEntity();
        Entity person3 = person.addEntity();
        Attribute power1 = power.putAttribute(1L);
        Attribute power2 = power.putAttribute(2L);
        Attribute power3 = power.putAttribute(3L);
        RelationshipType relationType = tx.putRelationshipType(Schema.ImplicitType.HAS.getLabel(Label.of("power"))).relates(resourceOwner).relates(resourceValue);
        relationType.addRelationship().addRolePlayer(resourceOwner, person1).addRolePlayer(resourceValue, power1);
        relationType.addRelationship().addRolePlayer(resourceOwner, person2).addRolePlayer(resourceValue, power2);
        person1.attribute(power2);
        person3.attribute(power3);
        tx.commit();
    }
    Optional<Number> result;
    try (GraknTx graph = session.open(GraknTxType.READ)) {
        // No need to test all statistics as most of them share the same vertex program
        result = graph.graql().compute().min().of("power").in().execute();
        assertEquals(1L, result.get().longValue());
        result = graph.graql().compute().max().of("power").in().execute();
        assertEquals(3L, result.get().longValue());
        result = graph.graql().compute().sum().of("power").in().execute();
        assertEquals(8L, result.get().longValue());
        result = graph.graql().compute().median().of("power").in().execute();
        assertEquals(2L, result.get().longValue());
    }
}
Also used : EntityType(ai.grakn.concept.EntityType) Role(ai.grakn.concept.Role) GraknTx(ai.grakn.GraknTx) Entity(ai.grakn.concept.Entity) Attribute(ai.grakn.concept.Attribute) RelationshipType(ai.grakn.concept.RelationshipType) Test(org.junit.Test)

Example 83 with EntityType

use of ai.grakn.concept.EntityType in project grakn by graknlabs.

the class ConnectedComponentTest method addSchemaAndEntities.

private void addSchemaAndEntities() throws InvalidKBException {
    try (GraknTx graph = session.open(GraknTxType.WRITE)) {
        EntityType entityType1 = graph.putEntityType(thing);
        EntityType entityType2 = graph.putEntityType(anotherThing);
        Entity entity1 = entityType1.addEntity();
        Entity entity2 = entityType1.addEntity();
        Entity entity3 = entityType1.addEntity();
        Entity entity4 = entityType2.addEntity();
        entityId1 = entity1.getId();
        entityId2 = entity2.getId();
        entityId3 = entity3.getId();
        entityId4 = entity4.getId();
        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);
        relationshipType.addRelationship().addRolePlayer(role1, entity1).addRolePlayer(role2, entity2).getId();
        relationshipType.addRelationship().addRolePlayer(role1, entity2).addRolePlayer(role2, entity3).getId();
        relationshipType.addRelationship().addRolePlayer(role1, entity2).addRolePlayer(role2, entity4).getId();
        List<AttributeType> attributeTypeList = new ArrayList<>();
        attributeTypeList.add(graph.putAttributeType(resourceType1, AttributeType.DataType.DOUBLE));
        attributeTypeList.add(graph.putAttributeType(resourceType2, AttributeType.DataType.LONG));
        attributeTypeList.add(graph.putAttributeType(resourceType3, AttributeType.DataType.LONG));
        attributeTypeList.add(graph.putAttributeType(resourceType4, AttributeType.DataType.STRING));
        attributeTypeList.add(graph.putAttributeType(resourceType5, AttributeType.DataType.LONG));
        attributeTypeList.add(graph.putAttributeType(resourceType6, AttributeType.DataType.DOUBLE));
        attributeTypeList.add(graph.putAttributeType(resourceType7, AttributeType.DataType.DOUBLE));
        attributeTypeList.forEach(attributeType -> {
            entityType1.attribute(attributeType);
            entityType2.attribute(attributeType);
        });
        graph.commit();
    }
}
Also used : EntityType(ai.grakn.concept.EntityType) Role(ai.grakn.concept.Role) GraknTx(ai.grakn.GraknTx) Entity(ai.grakn.concept.Entity) AttributeType(ai.grakn.concept.AttributeType) RelationshipType(ai.grakn.concept.RelationshipType) ArrayList(java.util.ArrayList)

Example 84 with EntityType

use of ai.grakn.concept.EntityType in project grakn by graknlabs.

the class DegreeTest method testRelationshipPlaysARole.

@Test
public void testRelationshipPlaysARole() throws InvalidKBException {
    Role pet = tx.putRole("pet");
    Role owner = tx.putRole("owner");
    RelationshipType mansBestFriend = tx.putRelationshipType("mans-best-friend").relates(pet).relates(owner);
    EntityType person = tx.putEntityType("person").plays(owner);
    EntityType animal = tx.putEntityType("animal").plays(pet);
    Role ownership = tx.putRole("ownership");
    Role ownershipResource = tx.putRole("ownership-resource");
    RelationshipType hasOwnershipResource = tx.putRelationshipType("has-ownership-resource").relates(ownership).relates(ownershipResource);
    AttributeType<String> startDate = tx.putAttributeType("start-date", AttributeType.DataType.STRING);
    startDate.plays(ownershipResource);
    mansBestFriend.plays(ownership);
    // add instances
    Entity coco = animal.addEntity();
    Entity dave = person.addEntity();
    Relationship daveOwnsCoco = mansBestFriend.addRelationship().addRolePlayer(owner, dave).addRolePlayer(pet, coco);
    Attribute aStartDate = startDate.putAttribute("01/01/01");
    hasOwnershipResource.addRelationship().addRolePlayer(ownershipResource, aStartDate).addRolePlayer(ownership, daveOwnsCoco);
    Map<Long, Set<String>> referenceDegrees = new HashMap<>();
    referenceDegrees.put(1L, Sets.newHashSet(coco.getId().getValue(), dave.getId().getValue(), aStartDate.getId().getValue(), daveOwnsCoco.getId().getValue()));
    tx.commit();
    try (GraknTx graph = session.open(GraknTxType.READ)) {
        Map<Long, Set<String>> degrees = graph.graql().compute().centrality().usingDegree().execute();
        assertEquals(referenceDegrees, degrees);
    }
}
Also used : Entity(ai.grakn.concept.Entity) HashSet(java.util.HashSet) Set(java.util.Set) Attribute(ai.grakn.concept.Attribute) HashMap(java.util.HashMap) RelationshipType(ai.grakn.concept.RelationshipType) Role(ai.grakn.concept.Role) EntityType(ai.grakn.concept.EntityType) GraknTx(ai.grakn.GraknTx) Relationship(ai.grakn.concept.Relationship) Test(org.junit.Test)

Example 85 with EntityType

use of ai.grakn.concept.EntityType in project grakn by graknlabs.

the class DegreeTest method testDegreeTernaryRelationships.

@Test
public void testDegreeTernaryRelationships() throws InvalidKBException {
    // make relationship
    Role productionWithCast = tx.putRole("production-with-cast");
    Role actor = tx.putRole("actor");
    Role characterBeingPlayed = tx.putRole("character-being-played");
    RelationshipType hasCast = tx.putRelationshipType("has-cast").relates(productionWithCast).relates(actor).relates(characterBeingPlayed);
    EntityType movie = tx.putEntityType("movie").plays(productionWithCast);
    EntityType person = tx.putEntityType("person").plays(actor);
    EntityType character = tx.putEntityType("character").plays(characterBeingPlayed);
    Entity godfather = movie.addEntity();
    Entity marlonBrando = person.addEntity();
    Entity donVitoCorleone = character.addEntity();
    hasCast.addRelationship().addRolePlayer(productionWithCast, godfather).addRolePlayer(actor, marlonBrando).addRolePlayer(characterBeingPlayed, donVitoCorleone);
    Map<Long, Set<String>> referenceDegrees = new HashMap<>();
    referenceDegrees.put(1L, Sets.newHashSet(godfather.getId().getValue(), marlonBrando.getId().getValue(), donVitoCorleone.getId().getValue()));
    tx.commit();
    try (GraknTx graph = session.open(GraknTxType.READ)) {
        Map<Long, Set<String>> degrees = graph.graql().compute().centrality().usingDegree().execute();
        assertEquals(referenceDegrees, degrees);
    }
}
Also used : Role(ai.grakn.concept.Role) EntityType(ai.grakn.concept.EntityType) Entity(ai.grakn.concept.Entity) GraknTx(ai.grakn.GraknTx) HashSet(java.util.HashSet) Set(java.util.Set) HashMap(java.util.HashMap) RelationshipType(ai.grakn.concept.RelationshipType) Test(org.junit.Test)

Aggregations

EntityType (ai.grakn.concept.EntityType)168 Test (org.junit.Test)141 Role (ai.grakn.concept.Role)83 RelationshipType (ai.grakn.concept.RelationshipType)82 Entity (ai.grakn.concept.Entity)74 GraknTx (ai.grakn.GraknTx)45 Relationship (ai.grakn.concept.Relationship)21 Attribute (ai.grakn.concept.Attribute)19 AttributeType (ai.grakn.concept.AttributeType)17 ConceptId (ai.grakn.concept.ConceptId)17 Label (ai.grakn.concept.Label)17 Set (java.util.Set)16 HashSet (java.util.HashSet)15 Thing (ai.grakn.concept.Thing)14 GraknTxType (ai.grakn.GraknTxType)8 ArrayList (java.util.ArrayList)8 GraknSession (ai.grakn.GraknSession)7 Concept (ai.grakn.concept.Concept)7 HashMap (java.util.HashMap)7 Before (org.junit.Before)7