private Optional<IQ> getStarClassDefinition(RDFAtomPredicate predicate) { return queryMerger.mergeDefinitions(mapping.getRDFClasses(predicate).stream() .flatMap(i -> mapping.getRDFClassDefinition(predicate, i) .map(Stream::of) .orElseGet(Stream::empty)) .collect(ImmutableCollectors.toList())); }
private static Stream<VocabularyEntry> extractTripleVocabulary(Mapping mapping, TriplePredicate triplePredicate) { Stream<VocabularyEntry> vocabularyPropertyStream = mapping.getRDFProperties(triplePredicate).stream() .map(p -> new VocabularyEntry(p, 2)); Stream<VocabularyEntry> vocabularyClassStream = mapping.getRDFClasses(triplePredicate).stream() .map(p -> new VocabularyEntry(p, 1)); return Stream.concat(vocabularyClassStream,vocabularyPropertyStream); }
private ImmutableTable<RDFAtomPredicate, IRI, IQ> mergeMappingClassTables(ImmutableSet<Mapping> mappings) { ImmutableMap<Map.Entry<RDFAtomPredicate, IRI>, Collection<IQ>> multiTable = mappings.stream() .flatMap(m -> extractCellStream(m, p -> m.getRDFClasses(p).stream(), (p, i) -> m.getRDFClassDefinition(p, i).get())) .collect(ImmutableCollectors.toMultimap( c -> Maps.immutableEntry(c.getRowKey(), c.getColumnKey()), Table.Cell::getValue)) .asMap(); return multiTable.entrySet().stream() .map(e -> Tables.immutableCell( e.getKey().getKey(), e.getKey().getValue(), mergeDefinitions(e.getValue()))) .collect(ImmutableCollectors.toTable()); }
private static SameAsTargets extractSameAsTargets(ImmutableSet<Constant> sameAsIriTemplates, Mapping mapping, RDFAtomPredicate rdfAtomPredicate) { if (sameAsIriTemplates.isEmpty()) return new SameAsTargets(ImmutableSet.of(), ImmutableSet.of()); Stream<IRI> classIris = mapping.getRDFClasses(rdfAtomPredicate).stream() .filter(classIri -> classify(sameAsIriTemplates, mapping.getRDFClassDefinition(rdfAtomPredicate, classIri).get(), rdfAtomPredicate, true) == PredicateClassification.SUBJECT_ONLY); ImmutableMultimap<PredicateClassification, IRI> propertyIris = mapping.getRDFProperties(rdfAtomPredicate).stream() .filter(iri -> !iri.equals(OWL.SAME_AS)) .map(iri -> Maps.immutableEntry( classify(sameAsIriTemplates, mapping.getRDFPropertyDefinition(rdfAtomPredicate, iri).get(), rdfAtomPredicate, false), iri )) .collect(ImmutableCollectors.toMultimap()); return new SameAsTargets( Stream.concat( classIris, propertyIris.get(PredicateClassification.SUBJECT_ONLY).stream()) .collect(ImmutableCollectors.toSet()), ImmutableSet.copyOf(propertyIris.get(PredicateClassification.AT_LEAST_OBJECT))); }