private MappingWithProvenance transformMapping(MappingWithProvenance mapping, IntensionalQueryMerger intensionalQueryMerger) { return provenanceMappingFactory.create( mapping.getProvenanceMap().entrySet().stream() .filter(e -> !(MappingTools.extractRDFPredicate(e.getKey()).getIri().equals(Ontop.CANONICAL_IRI))) .collect(ImmutableCollectors.toMap( e -> transformAssertion( e.getKey(), intensionalQueryMerger ), Map.Entry::getValue )), mapping.getMetadata() ); }
mapping.getExecutorRegistry(), mapping.getMetadata());
@Override public ImmutableMap<CQIE, PPMappingAssertionProvenance> convert(MappingWithProvenance mappingWithProvenance) { return mappingWithProvenance.getProvenanceMap().entrySet().stream() .flatMap(e -> convertMappingQuery(e.getKey()) .map(r -> new AbstractMap.SimpleEntry<>(r, e.getValue()))) .collect(ImmutableCollectors.toMap()); }
/** * Converts the PPMapping into a Mapping. * <p> * During the conversion, data types are inferred and mapping assertions are validated * TODO: move this method to AbstractMappingExtractor */ protected MappingAndDBMetadata convertPPMapping(SQLPPMapping ppMapping, Optional<RDBMetadata> optionalDBMetadata, OBDASpecInput specInput, Optional<Ontology> optionalOntology, ExecutorRegistry executorRegistry) throws MetaMappingExpansionException, DBMetadataExtractionException, MappingOntologyMismatchException, InvalidMappingSourceQueriesException, UnknownDatatypeException { RDBMetadata dbMetadata = extractDBMetadata(ppMapping, optionalDBMetadata, specInput); log.debug("DB Metadata: \n{}", dbMetadata); log.debug(dbMetadata.printKeys()); SQLPPMapping expandedPPMapping = expandPPMapping(ppMapping, settings, dbMetadata); // NB: may also add views in the DBMetadata (for non-understood SQL queries) MappingWithProvenance provMapping = ppMappingConverter.convert(expandedPPMapping, dbMetadata, executorRegistry); dbMetadata.freeze(); MappingWithProvenance filledProvMapping = mappingDatatypeFiller.inferMissingDatatypes(provMapping, dbMetadata); validateMapping(optionalOntology, filledProvMapping); return new MappingAndDBMetadataImpl(filledProvMapping.toRegularMapping(), dbMetadata); }
typeCompletion.insertDataTyping(rule); return datalog2MappingConverter.convertMappingRules(ruleMap, mapping.getMetadata());
@Override public ImmutableMap<CQIE, PPMappingAssertionProvenance> convert(MappingWithProvenance mappingWithProvenance) { return mappingWithProvenance.getProvenanceMap().entrySet().stream() .flatMap(e -> convertMappingQuery(e.getKey()) .map(r -> new AbstractMap.SimpleEntry<>(r, e.getValue()))) .collect(ImmutableCollectors.toMap()); }
/** * Converts the PPMapping into a Mapping. * <p> * During the conversion, data types are inferred and mapping assertions are validated * TODO: move this method to AbstractMappingExtractor */ protected MappingAndDBMetadata convertPPMapping(SQLPPMapping ppMapping, Optional<RDBMetadata> optionalDBMetadata, OBDASpecInput specInput, Optional<Ontology> optionalOntology, ExecutorRegistry executorRegistry) throws MetaMappingExpansionException, DBMetadataExtractionException, MappingOntologyMismatchException, InvalidMappingSourceQueriesException, UnknownDatatypeException { RDBMetadata dbMetadata = extractDBMetadata(ppMapping, optionalDBMetadata, specInput); log.debug("DB Metadata: \n{}", dbMetadata); log.debug(dbMetadata.printKeys()); SQLPPMapping expandedPPMapping = expandPPMapping(ppMapping, settings, dbMetadata); // NB: may also add views in the DBMetadata (for non-understood SQL queries) MappingWithProvenance provMapping = ppMappingConverter.convert(expandedPPMapping, dbMetadata, executorRegistry); dbMetadata.freeze(); MappingWithProvenance filledProvMapping = mappingDatatypeFiller.inferMissingDatatypes(provMapping, dbMetadata); MappingWithProvenance canonizedMapping = canonicalTransformer.transform(filledProvMapping); validateMapping(optionalOntology, canonizedMapping); return new MappingAndDBMetadataImpl(canonizedMapping.toRegularMapping(), dbMetadata); }
/** * Requires the annotation, data and object properties to be clearly distinguished * (disjoint sets, according to the OWL semantics) * * Be careful if you are using a T-box bootstrapped from the mapping * * It is NOT assumed that the declared vocabulary contains information on every RDF predicate * used in the mapping. * */ @Override public void validate(MappingWithProvenance mapping, Ontology ontology) throws MappingOntologyMismatchException { ImmutableMultimap<IRI, Datatype> datatypeMap = computeDataTypeMap(ontology.tbox()); for (Map.Entry<IQ, PPMappingAssertionProvenance> entry : mapping.getProvenanceMap().entrySet()) { validateAssertion(entry.getKey(), entry.getValue(), ontology, datatypeMap); } }
/** * Requires the annotation, data and object properties to be clearly distinguished * (disjoint sets, according to the OWL semantics) * * Be careful if you are using a T-box bootstrapped from the mapping * * It is NOT assumed that the declared vocabulary contains information on every RDF predicate * used in the mapping. * */ @Override public void validate(MappingWithProvenance mapping, Ontology ontology) throws MappingOntologyMismatchException { ImmutableMultimap<String, Datatype> datatypeMap = computeDataTypeMap(ontology.tbox()); for (Map.Entry<IntermediateQuery, PPMappingAssertionProvenance> entry : mapping.getProvenanceMap().entrySet()) { validateAssertion(entry.getKey(), entry.getValue(), ontology, datatypeMap); } }
private Optional<IQ> extractCanIRIDefinition(MappingWithProvenance mapping) { return queryMerger.mergeDefinitions( mapping.getProvenanceMap().keySet().stream() .filter(q -> (MappingTools.extractRDFPredicate(q).getIri().equals(Ontop.CANONICAL_IRI))) .collect(ImmutableCollectors.toList())); }