private ImmutableTable<RDFAtomPredicate, IRI, IQ> extractTable( ImmutableMap<IQ, MappingTools.RDFPredicateInfo> iqClassificationMap, boolean isClass) { return iqClassificationMap.entrySet().stream() .filter(e -> e.getValue().isClass() == isClass) .map(e -> Tables.immutableCell( (RDFAtomPredicate) e.getKey().getProjectionAtom().getPredicate(), e.getValue().getIri(), e.getKey())) .collect(ImmutableCollectors.toTable()); }
private ImmutableTable<RDFAtomPredicate, IRI, IQ> extractTable( ImmutableMap<IQ, MappingTools.RDFPredicateInfo> iqClassificationMap, boolean isClass) { ImmutableMultimap<Map.Entry<RDFAtomPredicate, IRI>, IQ> multimap = iqClassificationMap.entrySet().stream() .filter(e -> e.getValue().isClass() == isClass) .collect(ImmutableCollectors.toMultimap( e -> Maps.immutableEntry( (RDFAtomPredicate) e.getKey().getProjectionAtom().getPredicate(), e.getValue().getIri()), Map.Entry::getKey)); return multimap.asMap().entrySet().stream() .map(e -> Tables.immutableCell( e.getKey().getKey(), e.getKey().getValue(), mergeDefinitions(e.getValue()))) .collect(ImmutableCollectors.toTable()); }
@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()); }
private ImmutableTable<RDFAtomPredicate, IRI, IQ> normalize( ImmutableSet<Table.Cell<RDFAtomPredicate, IRI, IQ>> queryCells, AtomicInteger i) { return queryCells.stream() .map(c -> Tables.immutableCell( c.getRowKey(), c.getColumnKey(), appendSuffixToVariableNames(c.getValue(), i.incrementAndGet()))) .collect(ImmutableCollectors.toTable()); }
private ImmutableTable<RDFAtomPredicate, IRI, IQ> mergeMappingPropertyTables(ImmutableSet<Mapping> mappings) { ImmutableMap<Map.Entry<RDFAtomPredicate, IRI>, Collection<IQ>> multiTable = mappings.stream() .flatMap(m -> extractCellStream(m, p -> m.getRDFProperties(p).stream(), (p, i) -> m.getRDFPropertyDefinition(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 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 ImmutableTable<RDFAtomPredicate, IRI, IQ> updateDefinitions(ImmutableTable<RDFAtomPredicate, IRI, IQ> currentTable, ImmutableTable<RDFAtomPredicate, IRI, IQ> updateTable) { return Stream.concat( updateTable.cellSet().stream(), currentTable.cellSet().stream() .filter(c -> !updateTable.contains(c.getRowKey(), c.getColumnKey()))) .collect(ImmutableCollectors.toTable()); } }
.collect(ImmutableCollectors.toTable());