private UriTemplateMatcher mergeURITemplateMatchers(ImmutableSet<Mapping> mappings) { return UriTemplateMatcher.merge( mappings.stream() .map(m -> m.getMetadata().getUriTemplateMatcher()), termFactory ); }
private UriTemplateMatcher mergeURITemplateMatchers(ImmutableSet<Mapping> mappings) { return UriTemplateMatcher.merge( mappings.stream() .map(m -> m.getMetadata().getUriTemplateMatcher()) ); }
private PrefixManager mergePrefixManagers(ImmutableSet<Mapping> mappings) { ImmutableMap<String, Collection<String>> prefixToUris = mappings.stream() .flatMap(m -> m.getMetadata().getPrefixManager().getPrefixMap().entrySet().stream()) .collect(ImmutableCollectors.toMultimap()) .asMap(); ImmutableMap<String, String> prefixToUri = prefixToUris.entrySet().stream() .collect(ImmutableCollectors.toMap( e -> e.getKey(), e -> flattenURIList(e.getKey(), e.getValue()) )); return new SimplePrefixManager(prefixToUri); }
@Override public Mapping saturate(Mapping mapping, DBMetadata dbMetadata, ClassifiedTBox saturatedTBox) { ImmutableList<LinearInclusionDependency> foreignKeyRules = dbMetadata.getDatabaseRelations().stream() .map(r -> r.getForeignKeys()) .flatMap(List::stream) .map(fk -> getLinearInclusionDependency(fk)) .collect(ImmutableCollectors.toList()); CQContainmentCheckUnderLIDs foreignKeyCQC = new CQContainmentCheckUnderLIDs(foreignKeyRules, datalogFactory, unifierUtilities, substitutionUtilities, termFactory); ImmutableList<CQIE> initialMappingRules = mapping2DatalogConverter.convert(mapping) .collect(ImmutableCollectors.toList()); ImmutableSet<CQIE> saturatedMappingRules = ImmutableSet.copyOf( tMappingProcessor.getTMappings(initialMappingRules, saturatedTBox, foreignKeyCQC, tMappingExclusionConfig)); return datalog2MappingConverter.convertMappingRules(ImmutableList.copyOf(saturatedMappingRules), mapping.getMetadata()); }
private PrefixManager mergePrefixManagers(ImmutableSet<Mapping> mappings) { ImmutableMap<String, Collection<String>> prefixToUris = mappings.stream() .flatMap(m -> m.getMetadata().getPrefixManager().getPrefixMap().entrySet().stream()) .collect(ImmutableCollectors.toMultimap()) .asMap(); ImmutableMap<String, String> prefixToUri = prefixToUris.entrySet().stream() .collect(ImmutableCollectors.toMap( Map.Entry::getKey, e -> flattenURIList(e.getKey(), e.getValue()) )); return new SimplePrefixManager(prefixToUri); }
@Override public Mapping saturate(Mapping mapping, DBMetadata dbMetadata, ClassifiedTBox saturatedTBox) { ImmutableList<CQIE> initialMappingRules = mapping2DatalogConverter.convert(mapping) .collect(ImmutableCollectors.toList()); LinearInclusionDependencies foreignKeyRules = new LinearInclusionDependencies(dbMetadata.generateFKRules()); CQContainmentCheckUnderLIDs foreignKeyCQC = new CQContainmentCheckUnderLIDs(foreignKeyRules); ImmutableSet<CQIE> saturatedMappingRules = TMappingProcessor.getTMappings(initialMappingRules, saturatedTBox, foreignKeyCQC, tMappingExclusionConfig).stream() .collect(ImmutableCollectors.toSet()); List<CQIE> allMappingRules = new ArrayList<>(saturatedMappingRules); allMappingRules.addAll(generateTripleMappings(saturatedMappingRules)); return datalog2MappingConverter.convertMappingRules(ImmutableList.copyOf(allMappingRules), dbMetadata, mapping.getExecutorRegistry(), mapping.getMetadata()); }
@Override public Mapping rewrite(Mapping mapping, DBMetadata dbMetadata) { ImmutableList<CQIE> inputMappingRules = mapping2DatalogConverter.convert(mapping).collect(ImmutableCollectors.toList()); List<CQIE> canonicalRules = new CanonicalIRIRewriter().buildCanonicalIRIMappings(inputMappingRules); return datalog2MappingConverter.convertMappingRules(ImmutableList.copyOf(canonicalRules), dbMetadata, mapping.getExecutorRegistry(), mapping.getMetadata()); } }
@Override public Mapping normalize(Mapping mapping) { AtomicInteger i = new AtomicInteger(0); ImmutableTable<RDFAtomPredicate, IRI, IQ> newPropertyTable = normalize(mapping.getRDFPropertyQueries(), i); ImmutableTable<RDFAtomPredicate, IRI, IQ> newClassTable = normalize(mapping.getRDFClassQueries(), i); return specificationFactory.createMapping(mapping.getMetadata(), newPropertyTable, newClassTable); }
@Override public Mapping rewrite(Mapping mapping, DBMetadata dbMetadata) { if(enabled){ ImmutableList<CQIE> rules = mapping2DatalogConverter.convert(mapping) .collect(ImmutableCollectors.toList()); ImmutableList<CQIE> updatedRules = MappingSameAs.addSameAsInverse(rules); return datalog2MappingConverter.convertMappingRules(updatedRules, dbMetadata, mapping.getExecutorRegistry(), mapping.getMetadata()); } return mapping; } }
@Override public Mapping normalize(Mapping mapping) { Stream<IntermediateQuery> queryStream = mapping.getPredicates().stream() .map(mapping::getDefinition) .filter(Optional::isPresent) .map(Optional::get); ImmutableMap<AtomPredicate, IntermediateQuery> normalizedMappingMap = renameQueries(queryStream) .collect(ImmutableCollectors.toMap( q -> q.getProjectionAtom().getPredicate(), q -> q )); return specificationFactory.createMapping(mapping.getMetadata(), normalizedMappingMap, mapping.getExecutorRegistry()); }
@Override public OBDASpecification transform(Mapping mapping, DBMetadata dbMetadata, Optional<Ontology> ontology) { if (ontology.isPresent()) { Mapping factsAsMapping = factConverter.convert(ontology.get().abox(), settings.isOntologyAnnotationQueryingEnabled(), mapping.getMetadata().getUriTemplateMatcher()); Mapping mappingWithFacts = mappingMerger.merge(mapping, factsAsMapping); return createSpecification(mappingWithFacts, dbMetadata, ontology.get().tbox()); } else { ClassifiedTBox emptyTBox = OntologyBuilderImpl.builder(rdfFactory).build().tbox(); return createSpecification(mapping, dbMetadata, emptyTBox); } }
@Override public OBDASpecification transform(Mapping mapping, DBMetadata dbMetadata, Optional<Ontology> ontology) { if (ontology.isPresent()) { Mapping factsAsMapping = factConverter.convert(ontology.get().abox(), mapping.getExecutorRegistry(), settings.isOntologyAnnotationQueryingEnabled(), mapping.getMetadata().getUriTemplateMatcher()); Mapping mappingWithFacts = mappingMerger.merge(mapping, factsAsMapping); return createSpecification(mappingWithFacts, dbMetadata, ontology.get().tbox()); } else { ClassifiedTBox emptyTBox = OntologyBuilderImpl.builder().build().tbox(); return createSpecification(mapping, dbMetadata, emptyTBox); } }
this.inputQueryTranslator = translationFactory.createInputQueryTranslator(saturatedMapping.getMetadata() .getUriTemplateMatcher()); this.sameAsRewriter = translationFactory.createSameAsRewriter(saturatedMapping);