Compare commits

..

No commits in common. "master" and "4.440.0" have entirely different histories.

21 changed files with 50 additions and 258 deletions

View File

@ -47,7 +47,7 @@ public class TextEntity implements IEntity {
TextRange textRange; TextRange textRange;
@Builder.Default @Builder.Default
Set<TextRange> duplicateTextRanges = new HashSet<>(); List<TextRange> duplicateTextRanges = new ArrayList<>();
String type; // TODO: make final once ManualChangesApplicationService::recategorize is deleted String type; // TODO: make final once ManualChangesApplicationService::recategorize is deleted
final EntityType entityType; final EntityType entityType;
@ -215,20 +215,22 @@ public class TextEntity implements IEntity {
return textEntity.contains(this); return textEntity.contains(this);
} }
public boolean contains(TextEntity textEntity) { public boolean contains(TextEntity textEntity) {
if (this.textRange.contains(textEntity.getTextRange())) { if (this.textRange.contains(textEntity.getTextRange())) {
return true; return true;
} }
Set<TextRange> textEntityDuplicateRanges = textEntity.getDuplicateTextRanges(); List<TextRange> textEntityDuplicateRanges = textEntity.getDuplicateTextRanges();
// use optimized indexed loops for extra performance boost
for (TextRange duplicateTextRange : this.duplicateTextRanges) { for (int i = 0, duplicateTextRangesSize = duplicateTextRanges.size(); i < duplicateTextRangesSize; i++) {
TextRange duplicateTextRange = duplicateTextRanges.get(i);
if (duplicateTextRange.contains(textEntity.getTextRange())) { if (duplicateTextRange.contains(textEntity.getTextRange())) {
return true; return true;
} }
for (int j = 0, textEntityDuplicateRangesSize = textEntityDuplicateRanges.size(); j < textEntityDuplicateRangesSize; j++) {
for (TextRange otherRange : textEntityDuplicateRanges) { TextRange otherRange = textEntityDuplicateRanges.get(j);
if (duplicateTextRange.contains(otherRange)) { if (duplicateTextRange.contains(otherRange)) {
return true; return true;
} }
@ -239,7 +241,6 @@ public class TextEntity implements IEntity {
} }
public boolean intersects(TextEntity textEntity) { public boolean intersects(TextEntity textEntity) {
return this.textRange.intersects(textEntity.getTextRange()) // return this.textRange.intersects(textEntity.getTextRange()) //

View File

@ -155,7 +155,7 @@ public class ManualChangesApplicationService {
entityToBeResized.setTextRange(closestEntity.getTextRange()); entityToBeResized.setTextRange(closestEntity.getTextRange());
entityToBeResized.setTextAfter(closestEntity.getTextAfter()); entityToBeResized.setTextAfter(closestEntity.getTextAfter());
entityToBeResized.setTextBefore(closestEntity.getTextBefore()); entityToBeResized.setTextBefore(closestEntity.getTextBefore());
entityToBeResized.setDuplicateTextRanges(new HashSet<>(closestEntity.getDuplicateTextRanges())); entityToBeResized.setDuplicateTextRanges(new ArrayList<>(closestEntity.getDuplicateTextRanges()));
entityToBeResized.setValue(closestEntity.getValue()); entityToBeResized.setValue(closestEntity.getValue());
entityToBeResized.setPages(newIntersectingPages); entityToBeResized.setPages(newIntersectingPages);
} }

View File

@ -985,11 +985,11 @@ public class EntityCreationService {
return Optional.empty(); // Entity has been recategorized and should not be created at all. return Optional.empty(); // Entity has been recategorized and should not be created at all.
} }
TextEntity existingEntity = optionalTextEntity.get(); TextEntity existingEntity = optionalTextEntity.get();
if (existingEntity.getTextRange().equals(trimmedTextRange)) { if (existingEntity.getTextRange().equals(textRange)) {
return optionalTextEntity; // exactly the same entity, return directly return optionalTextEntity; // exactly the same entity, return directly
} }
if (!existingEntity.resized()) { if (!existingEntity.resized()) {
addDuplicateEntityToGraph(existingEntity, trimmedTextRange, node); addDuplicateEntityToGraph(existingEntity, textRange, node);
return optionalTextEntity; // If Entity has not been resized, insert as duplicate at appropriate position return optionalTextEntity; // If Entity has not been resized, insert as duplicate at appropriate position
} }
return Optional.empty(); // Entity has been resized, if there are duplicates they should be treated there return Optional.empty(); // Entity has been resized, if there are duplicates they should be treated there

View File

@ -14,15 +14,12 @@ import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval;
import com.iqser.red.service.redaction.v1.server.RedactionServiceSettings; import com.iqser.red.service.redaction.v1.server.RedactionServiceSettings;
import com.iqser.red.service.redaction.v1.server.model.PrecursorEntity; import com.iqser.red.service.redaction.v1.server.model.PrecursorEntity;
import com.iqser.red.service.redaction.v1.server.model.document.entity.EntityType; import com.iqser.red.service.redaction.v1.server.model.document.entity.EntityType;
import com.iqser.red.service.redaction.v1.server.model.document.entity.TextEntity; import com.iqser.red.service.redaction.v1.server.model.document.entity.TextEntity;
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Document;
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Page;
import com.iqser.red.service.redaction.v1.server.model.document.nodes.SemanticNode; import com.iqser.red.service.redaction.v1.server.model.document.nodes.SemanticNode;
import com.iqser.red.service.redaction.v1.server.service.DictionaryService; import com.iqser.red.service.redaction.v1.server.service.DictionaryService;
import com.iqser.red.service.redaction.v1.server.service.EntityFindingUtility; import com.iqser.red.service.redaction.v1.server.service.EntityFindingUtility;
@ -44,14 +41,9 @@ public class EntityFromPrecursorCreationService {
RedactionServiceSettings settings; RedactionServiceSettings settings;
public List<PrecursorEntity> createEntitiesIfFoundAndReturnNotFoundEntries(ManualRedactions manualRedactions, Document document, String dossierTemplateId) { public List<PrecursorEntity> createEntitiesIfFoundAndReturnNotFoundEntries(ManualRedactions manualRedactions, SemanticNode node, String dossierTemplateId) {
Set<Integer> pageNumbers = document.getPages()
.stream()
.map(Page::getNumber)
.collect(Collectors.toSet());
Set<IdRemoval> idRemovals = manualRedactions.getIdsToRemove(); Set<IdRemoval> idRemovals = manualRedactions.getIdsToRemove();
List<PrecursorEntity> manualEntities = manualRedactions.getEntriesToAdd() List<PrecursorEntity> manualEntities = manualRedactions.getEntriesToAdd()
.stream() .stream()
.filter(BaseAnnotation::isLocal) .filter(BaseAnnotation::isLocal)
@ -60,10 +52,6 @@ public class EntityFromPrecursorCreationService {
.filter(idRemoval -> idRemoval.getRequestDate().isAfter(manualRedactionEntry.getRequestDate())) .filter(idRemoval -> idRemoval.getRequestDate().isAfter(manualRedactionEntry.getRequestDate()))
.findAny()// .findAny()//
.isEmpty()) .isEmpty())
.filter(manualRedactionEntry -> manualRedactionEntry.getPositions()
.stream()
.map(Rectangle::getPage)
.allMatch(pageNumbers::contains))
.map(manualRedactionEntry -> // .map(manualRedactionEntry -> //
PrecursorEntity.fromManualRedactionEntry(manualRedactionEntry, dictionaryService.isHint(manualRedactionEntry.getType(), dossierTemplateId))) PrecursorEntity.fromManualRedactionEntry(manualRedactionEntry, dictionaryService.isHint(manualRedactionEntry.getType(), dossierTemplateId)))
.peek(manualEntity -> { .peek(manualEntity -> {
@ -74,7 +62,7 @@ public class EntityFromPrecursorCreationService {
} }
}) })
.toList(); .toList();
return toTextEntity(manualEntities, document); return toTextEntity(manualEntities, node);
} }
@ -152,7 +140,7 @@ public class EntityFromPrecursorCreationService {
} }
correctEntity.setDeepestFullyContainingNode(closestEntity.getDeepestFullyContainingNode()); correctEntity.setDeepestFullyContainingNode(closestEntity.getDeepestFullyContainingNode());
correctEntity.setIntersectingNodes(new ArrayList<>(closestEntity.getIntersectingNodes())); correctEntity.setIntersectingNodes(new ArrayList<>(closestEntity.getIntersectingNodes()));
correctEntity.setDuplicateTextRanges(new HashSet<>(closestEntity.getDuplicateTextRanges())); correctEntity.setDuplicateTextRanges(new ArrayList<>(closestEntity.getDuplicateTextRanges()));
correctEntity.setPages(new HashSet<>(closestEntity.getPages())); correctEntity.setPages(new HashSet<>(closestEntity.getPages()));
correctEntity.setValue(closestEntity.getValue()); correctEntity.setValue(closestEntity.getValue());

View File

@ -25,8 +25,7 @@ fforesight:
ignored-endpoints: [ '/redaction-gateway-v1', '/actuator/health/**',"/api/rules-logging/rulesocket","/api/rules-logging/rulesocket/**", '/redaction-gateway-v1/async/download/with-ott/**', ignored-endpoints: [ '/redaction-gateway-v1', '/actuator/health/**',"/api/rules-logging/rulesocket","/api/rules-logging/rulesocket/**", '/redaction-gateway-v1/async/download/with-ott/**',
'/internal-api/**', '/redaction-gateway-v1/docs/swagger-ui', '/rules/test', '/internal-api/**', '/redaction-gateway-v1/docs/swagger-ui', '/rules/test',
'/redaction-gateway-v1/docs/**','/redaction-gateway-v1/docs', '/redaction-gateway-v1/docs/**','/redaction-gateway-v1/docs',
'/api', '/api/','/api/docs/**','/api/docs','/api/docs/swagger-ui', '/api', '/api/','/api/docs/**','/api/docs','/api/docs/swagger-ui' ]
'/actuator/prometheus' ]
spring: spring:
application: application:

View File

@ -1584,23 +1584,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.7 // Rule unit: X.7
rule "X.7.0: Remove all images" rule "X.7.0: Remove all images"
salience 512 salience 512

View File

@ -243,7 +243,7 @@ public abstract class AbstractRedactionIntegrationTest {
public static void init() { public static void init() {
synchronized (PDFNet.class) { synchronized (PDFNet.class) {
PDFNet.initialize("demo:admin@knecon.com:7ed45ca80200000000c1e1765b94afccf5bbc0cb8582fd932c602e286a"); PDFNet.initialize("demo:1650351709282:7bd235e003000000004ec28a6743e1163a085e2115de2536ab6e2cfe5a");
} }
} }

View File

@ -169,7 +169,7 @@ import lombok.extern.slf4j.Slf4j;
public static void init() { public static void init() {
synchronized (PDFNet.class) { synchronized (PDFNet.class) {
PDFNet.initialize("demo:admin@knecon.com:7ed45ca80200000000c1e1765b94afccf5bbc0cb8582fd932c602e286a"); PDFNet.initialize("demo:1650351709282:7bd235e003000000004ec28a6743e1163a085e2115de2536ab6e2cfe5a");
} }
} }

View File

@ -261,6 +261,7 @@ public class DocumineFloraTest extends AbstractRedactionIntegrationTest {
} }
@Disabled
@Test @Test
public void testDoseMortalityExtraction() { public void testDoseMortalityExtraction() {

View File

@ -1315,7 +1315,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -1385,23 +1384,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -2079,7 +2079,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -2149,23 +2148,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -1451,7 +1451,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -1521,23 +1520,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.7 // Rule unit: X.7
rule "X.7.0: Remove all images" rule "X.7.0: Remove all images"
salience 512 salience 512

View File

@ -1042,7 +1042,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -1112,23 +1111,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -363,7 +363,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -433,23 +432,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -1408,23 +1408,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -423,7 +423,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -493,23 +492,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -513,7 +513,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -583,23 +582,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -396,6 +396,38 @@ rule "X.2.0: Remove Entity of type ENTITY when contained by FALSE_POSITIVE"
$contained.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE"); $contained.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
end end
rule "X.2.0: Remove Entity of type ENTITY when contained by FALSE_POSITIVE"
salience 64
when
$containment: Containment(
$container: container,
$contained: contained,
$container.entityType == EntityType.FALSE_POSITIVE,
$container.active(),
$contained.entityType == EntityType.ENTITY,
$contained.type() == $container.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
end
rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
salience 64
when
$containment: Containment(
$container: container,
$contained: contained,
$container.entityType == EntityType.FALSE_POSITIVE,
$container.active(),
$contained.entityType == EntityType.HINT,
$contained.type() == $container.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.2.1", "remove Entity of type HINT when contained by FALSE_POSITIVE");
end
rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE" rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
salience 64 salience 64
when when
@ -413,7 +445,6 @@ rule "X.2.1: Remove Entity of type HINT when contained by FALSE_POSITIVE"
end end
// Rule unit: X.3
rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION" rule "X.3.0: Remove RECOMMENDATION Contained by FALSE_RECOMMENDATION"
salience 64 salience 64
when when
@ -483,23 +514,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -995,23 +995,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -2187,23 +2187,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.6 // Rule unit: X.6
rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT" rule "X.6.0: Remove Lower Rank Entity Contained by ENTITY or HINT"
salience 32 salience 32

View File

@ -1589,23 +1589,6 @@ rule "X.5.1: Remove Entity of type RECOMMENDATION when contained by RECOMMENDATI
end end
rule "X.5.2: Remove Entity of type RECOMMENDATION when contained by ENTITY of same type"
salience 256
when
$intersection: Containment(
$container: container,
$contained: contained,
($container.entityType == EntityType.ENTITY || $container.entityType == EntityType.HINT),
!$container.removed(),
$contained.entityType == EntityType.RECOMMENDATION,
$container.type() == $contained.type(),
!$contained.hasManualChanges()
)
then
$contained.remove("X.5.2", "remove Entity of type RECOMMENDATION when contained by ENTITY of same type");
end
// Rule unit: X.7 // Rule unit: X.7
rule "X.7.0: Remove all images" rule "X.7.0: Remove all images"
salience 512 salience 512