diff --git a/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/RdfUtil.java b/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/RdfUtil.java index bf9aba13b..d5310f0ac 100644 --- a/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/RdfUtil.java +++ b/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/RdfUtil.java @@ -78,6 +78,17 @@ public static Model getModelElementDefinition( final Resource element ) { return result; } + public static Set getAllUrnsInModelExceptOnlyReferencedBySee( final Model model ) { + return Streams.stream( model.listStatements() ) + .flatMap( statement -> statement.getPredicate().equals( SammNs.SAMM.see() ) + ? Stream.of( statement.getSubject() ) + : Stream.of( statement.getSubject(), statement.getPredicate(), statement.getObject() ) ) + .filter( RDFNode::isURIResource ) + .map( node -> node.asResource().getURI() ) + .flatMap( urn -> AspectModelUrn.from( urn ).toJavaOptional().stream() ) + .collect( toSet() ); + } + public static Set getAllUrnsInModel( final Model model ) { return Streams.stream( model.listStatements() ) .flatMap( statement -> Stream.of( statement.getSubject(), statement.getPredicate(), statement.getObject() ) ) diff --git a/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/loader/AspectModelLoader.java b/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/loader/AspectModelLoader.java index 885d8cc0c..827966d15 100644 --- a/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/loader/AspectModelLoader.java +++ b/core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/aspectmodel/loader/AspectModelLoader.java @@ -520,7 +520,7 @@ private void urnsFromModelNeedResolution( final AspectModelFile modelFile, final .filter( uri -> uri.startsWith( AspectModelUrn.PROTOCOL_AND_NAMESPACE_PREFIX ) ) .forEach( urn -> context.resolvedUrns().add( urn ) ); - RdfUtil.getAllUrnsInModel( modelFile.sourceModel() ).stream() + RdfUtil.getAllUrnsInModelExceptOnlyReferencedBySee( modelFile.sourceModel() ).stream() .map( AspectModelUrn::toString ) .filter( urn -> !context.resolvedUrns().contains( urn ) ) .filter( urn -> !SammNs.wellKnownNamespaces().map( rdfNamespace -> urn.startsWith( rdfNamespace.getNamespace() ) ) diff --git a/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/loader/AspectModelInstantiatorTest.java b/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/loader/AspectModelInstantiatorTest.java index 361b4fa1f..12f229690 100644 --- a/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/loader/AspectModelInstantiatorTest.java +++ b/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/loader/AspectModelInstantiatorTest.java @@ -50,10 +50,10 @@ void testLoadAspectExpectSuccess( final TestAspect aspect ) { @Test void testAspectTransformationExpectSuccess() { - final Aspect aspect = loadAspect( TestAspect.ASPECT_WITH_SEE ); - final AspectModelUrn expectedAspectModelUrn = TestAspect.ASPECT_WITH_SEE.getUrn(); - assertBaseAttributes( aspect, expectedAspectModelUrn, "AspectWithSee", "Test Aspect With See", - "This is a test description", "http://example.com/" ); + final Aspect aspect = loadAspect( TestAspect.ASPECT_WITH_SEE_ATTRIBUTE ); + final AspectModelUrn expectedAspectModelUrn = TestAspect.ASPECT_WITH_SEE_ATTRIBUTE.getUrn(); + assertBaseAttributes( aspect, expectedAspectModelUrn, "AspectWithSeeAttribute", "Test Aspect", + "This is a test Aspect.", "http://example.com/" ); } @Test diff --git a/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/resolver/AspectModelResolverTest.java b/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/resolver/AspectModelResolverTest.java index 3be3c2261..bd768f36f 100644 --- a/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/resolver/AspectModelResolverTest.java +++ b/core/esmf-aspect-meta-model-java/src/test/java/org/eclipse/esmf/aspectmodel/resolver/AspectModelResolverTest.java @@ -34,6 +34,7 @@ import org.eclipse.esmf.metamodel.vocabulary.SammNs; import org.eclipse.esmf.samm.KnownVersion; import org.eclipse.esmf.test.InvalidTestAspect; +import org.eclipse.esmf.test.TestAspect; import org.eclipse.esmf.test.TestModel; import org.eclipse.esmf.test.TestResources; @@ -245,4 +246,11 @@ void getExceptionWhileLoadingModelWithTwoAspects() { "Aspect Model file testmodel:invalid/org.eclipse.esmf.test/1.0.0/InvalidAspectWithTwoAspects.ttl contains 2 " + "aspects, but may only contain one." ); } + + @Test + void testSeeReferencesAreNotResolved() { + assertThatCode( () -> { + TestResources.load( TestAspect.ASPECT_WITH_SEE_TO_ELEMENT ); + } ).doesNotThrowAnyException(); + } } diff --git a/core/esmf-test-aspect-models/src/main/java/org/eclipse/esmf/test/TestAspect.java b/core/esmf-test-aspect-models/src/main/java/org/eclipse/esmf/test/TestAspect.java index a6d450b9e..a05047110 100644 --- a/core/esmf-test-aspect-models/src/main/java/org/eclipse/esmf/test/TestAspect.java +++ b/core/esmf-test-aspect-models/src/main/java/org/eclipse/esmf/test/TestAspect.java @@ -175,8 +175,8 @@ public enum TestAspect implements TestModel { ASPECT_WITH_REGULAR_EXPRESSION_CONSTRAINT, ASPECT_WITH_RUBY_GEM_UPDATE_COMMAND, ASPECT_WITH_SCRIPT_TAGS, - ASPECT_WITH_SEE, ASPECT_WITH_SEE_ATTRIBUTE, + ASPECT_WITH_SEE_TO_ELEMENT, ASPECT_WITH_SET, ASPECT_WITH_SIMPLE_ENTITY, ASPECT_WITH_SIMPLE_PROPERTIES, diff --git a/core/esmf-test-aspect-models/src/main/resources/valid/org.eclipse.esmf.test/1.0.0/AspectWithSee.ttl b/core/esmf-test-aspect-models/src/main/resources/valid/org.eclipse.esmf.test/1.0.0/AspectWithSeeToElement.ttl similarity index 67% rename from core/esmf-test-aspect-models/src/main/resources/valid/org.eclipse.esmf.test/1.0.0/AspectWithSee.ttl rename to core/esmf-test-aspect-models/src/main/resources/valid/org.eclipse.esmf.test/1.0.0/AspectWithSeeToElement.ttl index 005718902..83304a0d7 100644 --- a/core/esmf-test-aspect-models/src/main/resources/valid/org.eclipse.esmf.test/1.0.0/AspectWithSee.ttl +++ b/core/esmf-test-aspect-models/src/main/resources/valid/org.eclipse.esmf.test/1.0.0/AspectWithSeeToElement.ttl @@ -12,12 +12,10 @@ @prefix : . @prefix samm: . @prefix samm-c: . -@prefix xsd: . -@prefix unit: . -:AspectWithSee a samm:Aspect ; - samm:preferredName "Test Aspect With See"@en ; - samm:description "This is a test description"@en ; - samm:see ; +:AspectWithSeeToElement a samm:Aspect ; + samm:preferredName "Test Aspect"@en ; + samm:description "This is a test Aspect."@en ; + samm:see ; samm:properties ( ) ; - samm:operations ( ) . + samm:operations ( ) . \ No newline at end of file diff --git a/tools/esmf-aspect-model-maven-plugin/src/test/resources/validate-pom-multiple-aspect-models/pom.xml b/tools/esmf-aspect-model-maven-plugin/src/test/resources/validate-pom-multiple-aspect-models/pom.xml index f40368233..fc8f44147 100644 --- a/tools/esmf-aspect-model-maven-plugin/src/test/resources/validate-pom-multiple-aspect-models/pom.xml +++ b/tools/esmf-aspect-model-maven-plugin/src/test/resources/validate-pom-multiple-aspect-models/pom.xml @@ -33,7 +33,7 @@ urn:samm:org.eclipse.esmf.test:1.0.0#AspectWithBlankNode urn:samm:org.eclipse.esmf.test:1.0.0#AspectWithComplexSet urn:samm:org.eclipse.esmf.test:1.0.0#AspectWithList - urn:samm:org.eclipse.esmf.test:1.0.0#AspectWithSee + urn:samm:org.eclipse.esmf.test:1.0.0#AspectWithSeeAttribute