use of ai.grakn.concept.Type in project grakn by graknlabs.
the class InsertQueryImpl method getSchemaConcepts.
@Override
public Set<SchemaConcept> getSchemaConcepts() {
GraknTx theGraph = getTx().orElseThrow(GraqlQueryException::noTx);
Set<SchemaConcept> types = allVarPatterns().map(VarPatternAdmin::getTypeLabel).flatMap(CommonUtil::optionalToStream).map(theGraph::<Type>getSchemaConcept).collect(Collectors.toSet());
match().ifPresent(mq -> types.addAll(mq.admin().getSchemaConcepts()));
return types;
}
use of ai.grakn.concept.Type in project grakn by graknlabs.
the class TinkerComputeQueryRunner method run.
public ComputeJob<Map<Long, Set<String>>> run(DegreeQuery query) {
return runCompute(query, tinkerComputeQuery -> {
Set<Label> ofLabels;
// Check if ofType is valid before returning emptyMap
if (query.targetLabels().isEmpty()) {
ofLabels = tinkerComputeQuery.subLabels();
} else {
ofLabels = query.targetLabels().stream().flatMap(typeLabel -> {
Type type = tx.getSchemaConcept(typeLabel);
if (type == null)
throw GraqlQueryException.labelNotFound(typeLabel);
return type.subs();
}).map(SchemaConcept::getLabel).collect(Collectors.toSet());
}
Set<Label> subLabels = Sets.union(tinkerComputeQuery.subLabels(), ofLabels);
if (!tinkerComputeQuery.selectedTypesHaveInstance()) {
return Collections.emptyMap();
}
Set<LabelId> subLabelIds = convertLabelsToIds(subLabels);
Set<LabelId> ofLabelIds = convertLabelsToIds(ofLabels);
ComputerResult result = tinkerComputeQuery.compute(new DegreeVertexProgram(ofLabelIds), new DegreeDistributionMapReduce(ofLabelIds, DegreeVertexProgram.DEGREE), subLabelIds);
return result.memory().get(DegreeDistributionMapReduce.class.getName());
});
}
use of ai.grakn.concept.Type in project grakn by graknlabs.
the class GraknTxTest method checkThatMainCentralCacheIsNotAffectedByTransactionModifications.
@Test
public void checkThatMainCentralCacheIsNotAffectedByTransactionModifications() throws InvalidKBException, ExecutionException, InterruptedException {
// Check Central cache is empty
assertCacheOnlyContainsMetaTypes();
Role r1 = tx.putRole("r1");
Role r2 = tx.putRole("r2");
EntityType e1 = tx.putEntityType("e1").plays(r1).plays(r2);
RelationshipType rel1 = tx.putRelationshipType("rel1").relates(r1).relates(r2);
// Purge the above concepts into the main cache
tx.commit();
tx = EmbeddedGraknSession.create(tx.keyspace(), Grakn.IN_MEMORY).open(GraknTxType.WRITE);
// Check cache is in good order
Collection<SchemaConcept> cachedValues = tx.getGlobalCache().getCachedTypes().values();
assertTrue("Type [" + r1 + "] was not cached", cachedValues.contains(r1));
assertTrue("Type [" + r2 + "] was not cached", cachedValues.contains(r2));
assertTrue("Type [" + e1 + "] was not cached", cachedValues.contains(e1));
assertTrue("Type [" + rel1 + "] was not cached", cachedValues.contains(rel1));
assertThat(e1.plays().collect(toSet()), containsInAnyOrder(r1, r2));
ExecutorService pool = Executors.newSingleThreadExecutor();
// Mutate Schema in a separate thread
pool.submit(() -> {
GraknTx innerGraph = Grakn.session(Grakn.IN_MEMORY, tx.keyspace()).open(GraknTxType.WRITE);
EntityType entityType = innerGraph.getEntityType("e1");
Role role = innerGraph.getRole("r1");
entityType.deletePlays(role);
}).get();
// Check the above mutation did not affect central repo
SchemaConcept foundE1 = tx.getGlobalCache().getCachedTypes().get(e1.getLabel());
assertTrue("Main cache was affected by transaction", foundE1.asType().plays().anyMatch(role -> role.equals(r1)));
}
use of ai.grakn.concept.Type in project grakn by graknlabs.
the class ReasonerQueryImpl method getVarTypeMap.
private Map<Var, Type> getVarTypeMap(Stream<IsaAtomBase> isas) {
HashMap<Var, Type> map = new HashMap<>();
isas.map(at -> new Pair<>(at.getVarName(), at.getSchemaConcept())).filter(p -> Objects.nonNull(p.getValue())).filter(p -> p.getValue().isType()).forEach(p -> {
Var var = p.getKey();
Type newType = p.getValue().asType();
Type type = map.get(var);
if (type == null)
map.put(var, newType);
else {
boolean isSubType = type.subs().anyMatch(t -> t.equals(newType));
if (isSubType)
map.put(var, newType);
}
});
return map;
}
use of ai.grakn.concept.Type in project grakn by graknlabs.
the class ConjunctionQueryTest method setUp.
// Mockito confuses IntelliJ
@SuppressWarnings("ResultOfMethodCallIgnored")
@Before
public void setUp() {
tx = mock(GraknTx.class);
Type resourceTypeWithoutSubTypesMock = mock(Type.class);
doAnswer((answer) -> Stream.of(resourceTypeWithoutSubTypesMock)).when(resourceTypeWithoutSubTypesMock).subs();
when(resourceTypeWithoutSubTypesMock.getLabel()).thenReturn(resourceTypeWithoutSubTypesLabel);
Type resourceTypeWithSubTypesMock = mock(Type.class);
doAnswer((answer) -> Stream.of(resourceTypeWithoutSubTypesMock, resourceTypeWithSubTypesMock)).when(resourceTypeWithSubTypesMock).subs();
when(resourceTypeWithSubTypesMock.getLabel()).thenReturn(resourceTypeWithSubTypesLabel);
when(tx.getSchemaConcept(resourceTypeWithoutSubTypesLabel)).thenReturn(resourceTypeWithoutSubTypesMock);
when(tx.getSchemaConcept(resourceTypeWithSubTypesLabel)).thenReturn(resourceTypeWithSubTypesMock);
}
Aggregations