diff --git a/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptCreateRequest.java b/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptCreateRequest.java index 8b3fe367e22..5d2c8f13393 100644 --- a/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptCreateRequest.java +++ b/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptCreateRequest.java @@ -115,7 +115,7 @@ public String execute(TransactionContext context) { private SnomedConceptDocument convertConcept(final TransactionContext context) { final String newDefinitionStatusId; - final Set newAxiomExpressions = getOwlAxiomExpressions(); + final Set newAxiomExpressions = getOwlAxiomExpressions(context); if (!newAxiomExpressions.isEmpty()) { newDefinitionStatusId = SnomedOWLAxiomHelper.getDefinitionStatusFromExpressions(newAxiomExpressions); @@ -140,12 +140,17 @@ private SnomedConceptDocument convertConcept(final TransactionContext context) { } } - private Set getOwlAxiomExpressions() { + private Set getOwlAxiomExpressions(final TransactionContext context) { return Optional.ofNullable(members()).map(Collection::stream).orElseGet(Stream::empty) .filter(req -> req.hasProperty(SnomedRf2Headers.FIELD_OWL_EXPRESSION)) + .filter(req -> { + String owlExpression = req.getProperty(SnomedRf2Headers.FIELD_OWL_EXPRESSION); + SnomedOWLExpressionConverterResult result = context.service(SnomedOWLExpressionConverter.class) + .toSnomedOWLRelationships(req.getReferencedComponentId(), owlExpression); + return result.getGciAxiomRelationships() == null || result.getGciAxiomRelationships().isEmpty(); + }) .map(req -> req.getProperty(SnomedRf2Headers.FIELD_OWL_EXPRESSION)) .collect(Collectors.toSet()); - } private void convertDescriptions(TransactionContext context, final String conceptId) { diff --git a/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptUpdateRequest.java b/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptUpdateRequest.java index 499feac7097..4a680f505c5 100644 --- a/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptUpdateRequest.java +++ b/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedConceptUpdateRequest.java @@ -251,6 +251,7 @@ private boolean updateDefinitionStatus(final TransactionContext context, final S .map(Collection::stream) .orElseGet(Stream::empty) .filter(member -> SnomedRefSetType.OWL_AXIOM == member.type() || Concepts.REFSET_OWL_AXIOM.equals(member.getReferenceSetId())) + .filter(member -> member.getGciOWLRelationships() == null || member.getGciOWLRelationships().isEmpty()) // Filter out GCI axioms .map(member -> (String) member.getProperties().get(SnomedRf2Headers.FIELD_OWL_EXPRESSION)) .collect(Collectors.toSet()); diff --git a/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedOWLAxiomHelper.java b/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedOWLAxiomHelper.java index 6fb0355fd84..d31d8504a68 100644 --- a/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedOWLAxiomHelper.java +++ b/snomed/com.b2international.snowowl.snomed.datastore/src/com/b2international/snowowl/snomed/datastore/request/SnomedOWLAxiomHelper.java @@ -35,10 +35,10 @@ public static String getDefinitionStatusFromExpressions(Set owlExpressio return owlExpressions.stream() .filter(expression -> !Strings.isNullOrEmpty(expression)) - .filter(expression -> expression.toLowerCase(Locale.ENGLISH).contains(EQUIVALENTCLASSES)) + .filter(expression -> !expression.toLowerCase(Locale.ENGLISH).contains(EQUIVALENTCLASSES)) .findFirst() - .map(equivalentClassesAxiom -> Concepts.FULLY_DEFINED) - .orElse(Concepts.PRIMITIVE); + .map(equivalentClassesAxiom -> Concepts.PRIMITIVE) + .orElse(Concepts.FULLY_DEFINED); } }