use of com.vaticle.typedb.core.logic.tool.TypeInference in project grakn by graknlabs.
the class TypeInferenceTest method iid_inference.
@Test
public void iid_inference() throws IOException {
define_standard_schema("basic-schema");
transaction.commit();
session.close();
session = databaseMgr.session(database, DATA);
transaction = session.transaction(WRITE);
Entity person = transaction.concepts().getEntityType("person").create();
TypeInference typeInference = transaction.logic().typeInference();
// using a person IID, the attribute can only be a name or email, but not a dog label
String queryString = "match $p iid " + person.getIID().toHexString() + "; $p has $a;";
Disjunction disjunction = createDisjunction(queryString);
typeInference.applyCombination(disjunction);
Map<String, Set<String>> expected = new HashMap<>() {
{
put("$p", set("person"));
put("$a", set("name", "email"));
}
};
assertEquals(expected, resolvedTypeMap(disjunction.conjunctions().get(0)));
}
use of com.vaticle.typedb.core.logic.tool.TypeInference in project grakn by graknlabs.
the class TypeInferenceTest method infer_from_value_type.
@Test
public void infer_from_value_type() {
define_custom_schema("define" + " dog sub entity, owns weight;" + " person sub entity, owns name;" + " weight sub attribute, value double;" + " name sub attribute, value string;");
TypeInference typeInference = transaction.logic().typeInference();
String queryString = "match" + " $p has $a;" + " $a = 'bob';";
Disjunction disjunction = createDisjunction(queryString);
typeInference.applyCombination(disjunction);
Map<String, Set<String>> expected = new HashMap<>() {
{
put("$p", set("person"));
put("$a", set("name"));
}
};
assertEquals(expected, resolvedTypeMap(disjunction.conjunctions().get(0)));
}
use of com.vaticle.typedb.core.logic.tool.TypeInference in project grakn by graknlabs.
the class TypeInferenceTest method relation_variable_role_variable_relation_named_variable.
@Test
public void relation_variable_role_variable_relation_named_variable() throws IOException {
define_standard_schema("basic-schema");
TypeInference typeInference = transaction.logic().typeInference();
String queryString = "match $r (wife: $yoko) isa $m;";
Disjunction disjunction = createDisjunction(queryString);
typeInference.applyCombination(disjunction);
Map<String, Set<String>> expected = new HashMap<>() {
{
put("$yoko", set("woman"));
put("$r", set("marriage"));
put("$m", set("marriage", "relation", "thing"));
put("$_relation:wife", set("marriage:wife"));
}
};
assertEquals(expected, resolvedTypeMap(disjunction.conjunctions().get(0)));
}
use of com.vaticle.typedb.core.logic.tool.TypeInference in project grakn by graknlabs.
the class TypeInferenceTest method overridden_relates_are_valid.
@Test
public void overridden_relates_are_valid() {
define_custom_schema("define" + " marriage sub relation, relates spouse;" + " hetero-marriage sub marriage," + " relates husband as spouse, relates wife as spouse;" + " person sub entity, plays marriage:spouse, plays hetero-marriage:husband," + " plays hetero-marriage:wife;");
TypeInference typeInference = transaction.logic().typeInference();
String queryString = "match $m (spouse: $x, spouse: $y) isa marriage;";
Disjunction disjunction = createDisjunction(queryString);
typeInference.applyCombination(disjunction);
Map<String, Set<String>> expected = new HashMap<>() {
{
put("$x", set("person"));
put("$y", set("person"));
put("$m", set("marriage", "hetero-marriage"));
put("$_marriage:spouse", set("marriage:spouse"));
put("$_marriage", set("marriage"));
}
};
assertEquals(expected, resolvedTypeMap(disjunction.conjunctions().get(0)));
}
use of com.vaticle.typedb.core.logic.tool.TypeInference in project grakn by graknlabs.
the class TypeInferenceTest method multiple_anonymous_vars.
@Test
public void multiple_anonymous_vars() throws IOException {
define_standard_schema("basic-schema");
String queryString = "match $a has name 'fido'; $a has label 'poodle';";
TypeInference typeInference = transaction.logic().typeInference();
Disjunction disjunction = createDisjunction(queryString);
typeInference.applyCombination(disjunction);
Map<String, Set<String>> expected = new HashMap<>() {
{
put("$a", set("dog"));
put("$_name", set("name"));
put("$_label", set("label"));
put("$_0", set("name"));
put("$_1", set("label"));
}
};
assertEquals(expected, resolvedTypeMap(disjunction.conjunctions().get(0)));
}
Aggregations