private Stream<Table.Cell<RDFAtomPredicate, IRI, IQ>> extractCellStream( Mapping m, Function<RDFAtomPredicate, Stream<IRI>> iriExtractor, BiFunction<RDFAtomPredicate, IRI, IQ> iqExtractor) { return m.getRDFAtomPredicates().stream() .flatMap(p -> iriExtractor.apply(p) .map(i -> Tables.immutableCell(p, i, iqExtractor.apply(p, i)))); }
/** * TODO: refactor so as to work with quads */ private static ImmutableMap<IRI, VocabularyEntry> extractVocabulary(@Nonnull Mapping mapping) { return mapping.getRDFAtomPredicates().stream() .filter(p -> p instanceof TriplePredicate) .map(p -> (TriplePredicate) p) .findFirst() .map(p -> extractTripleVocabulary(mapping, p) .collect(ImmutableCollectors.toMap(e -> e.name, e -> e))) .orElseGet(ImmutableMap::of); }
@Override public Stream<CQIE> convert(Mapping mapping) { return mapping.getRDFAtomPredicates().stream() .flatMap(p -> mapping.getQueries(p).stream()) .flatMap(this::convertMappingQuery); }
/** * TODO: Generalise it to quads and so on */ public static SameAsTargets extract(Mapping mapping) { Optional<RDFAtomPredicate> triplePredicate = mapping.getRDFAtomPredicates().stream() .filter(p -> p instanceof TriplePredicate) .findFirst(); return triplePredicate .map(p -> { ImmutableSet<Constant> iriTemplates = extractSameAsIRITemplates(mapping, p); return extractSameAsTargets(iriTemplates, mapping, p); }) .orElseGet(() -> new SameAsTargets(ImmutableSet.of(), ImmutableSet.of())); }
@Override public Mapping rewrite(Mapping mapping) { if (!enabled) return mapping; ImmutableTable<RDFAtomPredicate, IRI, IQ> mappingUpdate = mapping.getRDFAtomPredicates().stream() .flatMap(p -> mapping.getRDFPropertyDefinition(p, OWL.SAME_AS) .map(sameAsDef -> completeSameAsDefinition(sameAsDef, p)) .map(sameAsDef -> Tables.immutableCell(p, OWL.SAME_AS, sameAsDef)) .map(Stream::of) .orElseGet(Stream::empty)) .collect(ImmutableCollectors.toTable()); return mapping.update(mappingUpdate, ImmutableTable.of()); }
saturatedMapping.getRDFAtomPredicates().stream() .flatMap(p -> saturatedMapping.getQueries(p).stream()) .iterator()));