From 08177ecd2a0527b9606328c9bc8c02d4f315b334 Mon Sep 17 00:00:00 2001 From: Yuriy Shevtsov Date: Wed, 9 Aug 2023 10:48:57 +0200 Subject: [PATCH] Fixed bamm migration for Literal Datatypes #382 --- .../versionupdate/migrator/BammUriRewriter.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core/esmf-aspect-meta-model-version-migrator/src/main/java/org/eclipse/esmf/aspectmodel/versionupdate/migrator/BammUriRewriter.java b/core/esmf-aspect-meta-model-version-migrator/src/main/java/org/eclipse/esmf/aspectmodel/versionupdate/migrator/BammUriRewriter.java index 757938fd6..319a1c7cf 100644 --- a/core/esmf-aspect-meta-model-version-migrator/src/main/java/org/eclipse/esmf/aspectmodel/versionupdate/migrator/BammUriRewriter.java +++ b/core/esmf-aspect-meta-model-version-migrator/src/main/java/org/eclipse/esmf/aspectmodel/versionupdate/migrator/BammUriRewriter.java @@ -19,7 +19,11 @@ import java.util.Optional; import java.util.stream.Collectors; +import org.apache.jena.graph.NodeFactory; +import org.apache.jena.rdf.model.Literal; import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.RDFNode; +import org.apache.jena.rdf.model.ResourceFactory; import org.apache.jena.rdf.model.Statement; import org.eclipse.esmf.aspectmodel.vocabulary.Namespace; import org.eclipse.esmf.samm.KnownVersion; @@ -78,6 +82,19 @@ protected Optional rewriteUri( final String oldUri, final Map oldToNewNamespaces ) { + RDFNode result = super.updateRdfNode( rdfNode, oldToNewNamespaces ); + if ( result instanceof Literal literal ) { + result = Optional.ofNullable( literal.getDatatypeURI() ) + .flatMap( type -> rewriteUri( type, oldToNewNamespaces ) ) + .map( NodeFactory::getType ) + . map( type -> ResourceFactory.createTypedLiteral( literal.getString(), type ) ) + .orElse( result ); + } + return result; + } + @Override public Model migrate( final Model sourceModel ) { final Map targetPrefixes = Namespace.createPrefixMap( getTargetKnownVersion() );