Search in sources :

Example 26 with CoreTransaction

use of com.vaticle.typedb.core.database.CoreTransaction in project grakn by graknlabs.

the class CorrectnessVerifierTest method testCompletenessThrowsWhenRuleIsNotTriggeredEmployableExample.

@Test
public void testCompletenessThrowsWhenRuleIsNotTriggeredEmployableExample() {
    TypeQLMatch inferenceQuery = parseQuery("match $x has employable true;").asMatch();
    CorrectnessVerifier correctnessVerifier;
    try (CoreSession session = databaseMgr.session(database, Arguments.Session.Type.DATA)) {
        correctnessVerifier = CorrectnessVerifier.initialise(session);
        try (CoreTransaction tx = session.transaction(Arguments.Transaction.Type.WRITE)) {
            tx.query().delete(parseQuery("match $p isa person; delete $p isa person;"));
            tx.commit();
        }
        assertThrows(() -> correctnessVerifier.verifyCompleteness(inferenceQuery), CompletenessException.class);
        assertNotThrows(() -> correctnessVerifier.verifySoundness(inferenceQuery));
    }
}
Also used : CorrectnessVerifier(com.vaticle.typedb.core.test.behaviour.reasoner.verification.CorrectnessVerifier) CoreSession(com.vaticle.typedb.core.database.CoreSession) TypeQLMatch(com.vaticle.typeql.lang.query.TypeQLMatch) CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) Test(org.junit.Test)

Example 27 with CoreTransaction

use of com.vaticle.typedb.core.database.CoreTransaction in project grakn by graknlabs.

the class ReasonerSteps method data.

@Given("reasoning data")
public void data(String insertQueryStatements) {
    try (CoreSession session = databaseMgr.session(DATABASE, Arguments.Session.Type.DATA)) {
        try (CoreTransaction tx = session.transaction(Arguments.Transaction.Type.WRITE)) {
            tx.query().insert(TypeQL.parseQuery(String.join("\n", insertQueryStatements)).asInsert());
            tx.commit();
        }
    }
}
Also used : CoreSession(com.vaticle.typedb.core.database.CoreSession) CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) Given(io.cucumber.java.en.Given)

Example 28 with CoreTransaction

use of com.vaticle.typedb.core.database.CoreTransaction in project grakn by graknlabs.

the class UnifyHasConcludableTest method setUp.

@BeforeClass
public static void setUp() throws IOException {
    Util.resetDirectory(dataDir);
    databaseMgr = CoreDatabaseManager.open(options);
    databaseMgr.create(database);
    session = databaseMgr.session(database, Arguments.Session.Type.SCHEMA);
    try (CoreTransaction tx = session.transaction(Arguments.Transaction.Type.WRITE)) {
        tx.query().define(TypeQL.parseQuery("define " + "person sub entity," + "    owns first-name," + "    owns last-name," + "    owns age," + "    plays employment:employee;" + "company sub entity," + "    plays employment:employer;" + "employment sub relation," + "    relates employee," + "    relates employer;" + "name sub attribute, value string, abstract;" + // need a name with a name for one test
        "first-name sub name, owns first-name;" + "last-name sub name;" + "age sub attribute, value long;" + "self-owning-attribute sub attribute, value long, owns self-owning-attribute;" + "").asDefine());
        tx.commit();
    }
}
Also used : CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) BeforeClass(org.junit.BeforeClass)

Example 29 with CoreTransaction

use of com.vaticle.typedb.core.database.CoreTransaction in project grakn by graknlabs.

the class ReasonerTest method test_relation_rule.

@Test
public void test_relation_rule() {
    try (CoreSession session = databaseMgr.session(database, Arguments.Session.Type.SCHEMA)) {
        try (CoreTransaction txn = singleThreadElgTransaction(session, Arguments.Transaction.Type.WRITE)) {
            ConceptManager conceptMgr = txn.concepts();
            LogicManager logicMgr = txn.logic();
            EntityType person = conceptMgr.putEntityType("person");
            AttributeType name = conceptMgr.putAttributeType("name", AttributeType.ValueType.STRING);
            person.setOwns(name);
            RelationType friendship = conceptMgr.putRelationType("friendship");
            friendship.setRelates("friend");
            RelationType marriage = conceptMgr.putRelationType("marriage");
            marriage.setRelates("husband");
            marriage.setRelates("wife");
            person.setPlays(friendship.getRelates("friend"));
            person.setPlays(marriage.getRelates("husband"));
            person.setPlays(marriage.getRelates("wife"));
            logicMgr.putRule("marriage-is-friendship", TypeQL.parsePattern("{ $x isa person; $y isa person; (husband: $x, wife: $y) isa marriage; }").asConjunction(), TypeQL.parseVariable("(friend: $x, friend: $y) isa friendship").asThing());
            txn.commit();
        }
    }
    try (CoreSession session = databaseMgr.session(database, Arguments.Session.Type.DATA)) {
        try (CoreTransaction txn = singleThreadElgTransaction(session, Arguments.Transaction.Type.WRITE)) {
            txn.query().insert(TypeQL.parseQuery("insert $x isa person, has name 'Zack'; $y isa person, has name 'Yasmin'; (husband: $x, wife: $y) isa marriage;").asInsert());
            txn.commit();
        }
        try (CoreTransaction txn = singleThreadElgTransaction(session, Arguments.Transaction.Type.READ)) {
            List<ConceptMap> ans = txn.query().match(TypeQL.parseQuery("match $f (friend: $p1, friend: $p2) isa friendship; $p1 has name $na;").asMatch()).toList();
            ans.iterator().forEachRemaining(a -> {
                assertEquals("friendship", a.get("f").asThing().getType().getLabel().scopedName());
                assertEquals("person", a.get("p1").asThing().getType().getLabel().scopedName());
                assertEquals("person", a.get("p2").asThing().getType().getLabel().scopedName());
                assertEquals("name", a.get("na").asAttribute().getType().getLabel().scopedName());
            });
            assertEquals(2, ans.size());
        }
    }
}
Also used : ConceptManager(com.vaticle.typedb.core.concept.ConceptManager) EntityType(com.vaticle.typedb.core.concept.type.EntityType) LogicManager(com.vaticle.typedb.core.logic.LogicManager) AttributeType(com.vaticle.typedb.core.concept.type.AttributeType) RelationType(com.vaticle.typedb.core.concept.type.RelationType) CoreSession(com.vaticle.typedb.core.database.CoreSession) ConceptMap(com.vaticle.typedb.core.concept.answer.ConceptMap) CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) Test(org.junit.Test)

Example 30 with CoreTransaction

use of com.vaticle.typedb.core.database.CoreTransaction in project grakn by graknlabs.

the class ReasonerTest method singleThreadElgTransaction.

private CoreTransaction singleThreadElgTransaction(CoreSession session, Arguments.Transaction.Type transactionType) {
    CoreTransaction transaction = session.transaction(transactionType, new Options.Transaction().infer(true));
    ActorExecutorGroup service = new ActorExecutorGroup(1, new NamedThreadFactory("typedb-actor"));
    transaction.reasoner().resolverRegistry().setExecutorService(service);
    return transaction;
}
Also used : CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) NamedThreadFactory(com.vaticle.typedb.common.concurrent.NamedThreadFactory) ActorExecutorGroup(com.vaticle.typedb.core.concurrent.actor.ActorExecutorGroup) CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction)

Aggregations

CoreTransaction (com.vaticle.typedb.core.database.CoreTransaction)56 CoreSession (com.vaticle.typedb.core.database.CoreSession)46 Test (org.junit.Test)45 ConceptManager (com.vaticle.typedb.core.concept.ConceptManager)23 EntityType (com.vaticle.typedb.core.concept.type.EntityType)23 AttributeType (com.vaticle.typedb.core.concept.type.AttributeType)22 CoreDatabaseManager (com.vaticle.typedb.core.database.CoreDatabaseManager)20 ConceptMap (com.vaticle.typedb.core.concept.answer.ConceptMap)19 Conjunction (com.vaticle.typedb.core.pattern.Conjunction)16 RelationType (com.vaticle.typedb.core.concept.type.RelationType)13 Util.resolvedConjunction (com.vaticle.typedb.core.reasoner.resolution.Util.resolvedConjunction)12 Identifier (com.vaticle.typedb.core.traversal.common.Identifier)12 LogicManager (com.vaticle.typedb.core.logic.LogicManager)10 Options (com.vaticle.typedb.core.common.parameters.Options)9 NamedThreadFactory (com.vaticle.typedb.common.concurrent.NamedThreadFactory)8 ActorExecutorGroup (com.vaticle.typedb.core.concurrent.actor.ActorExecutorGroup)8 Variable (com.vaticle.typedb.core.pattern.variable.Variable)7 MB (com.vaticle.typedb.core.common.collection.Bytes.MB)6 TypeDBException (com.vaticle.typedb.core.common.exception.TypeDBException)6 Arguments (com.vaticle.typedb.core.common.parameters.Arguments)6