use of eu.esdihumboldt.commons.goml.omwg.FeatureClass in project hale by halestudio.
the class AlignmentToModelAlignmentDigester method translate.
/**
* Translates a {@link HaleAlignment} into an intermediate
* {@link ModelAlignment} format.
*
* @param hal the HALE alignment
* @return {@link ModelAlignment}
* @throws TranslationException
* if any problems occurred during translation
*/
@Override
public ModelAlignment translate(HaleAlignment hal) throws TranslationException {
List<ModelClassMappingCell> classMappings = new ArrayList<ModelClassMappingCell>();
List<ModelAttributeMappingCell> attributeMappings = new ArrayList<ModelAttributeMappingCell>();
ArrayList<ModelStaticAssignmentCell> staticAssigments = new ArrayList<ModelStaticAssignmentCell>();
Alignment source = hal.getAlignment();
Map<String, SchemaElement> sourceFeatures = hal.getSourceElements();
Map<String, SchemaElement> targetFeatures = hal.getTargetElements();
for (ICell cell : source.getMap()) {
IEntity sourceEntity = cell.getEntity1();
IEntity targetEntity = cell.getEntity2();
boolean sourceIsFeatureClass = sourceEntity instanceof FeatureClass;
boolean targetIsFeatureClass = targetEntity instanceof FeatureClass;
if (sourceIsFeatureClass && targetIsFeatureClass) {
// type mapping
classMappings.add(createCell((FeatureClass) sourceEntity, (FeatureClass) targetEntity, sourceFeatures, targetFeatures));
} else if (!sourceIsFeatureClass && !targetIsFeatureClass) {
// property mapping
ModelAttributeMappingCell modelCell = createAttribute(cell, (Property) sourceEntity, (Property) targetEntity, sourceFeatures, targetFeatures);
if (modelCell != null) {
attributeMappings.add(modelCell);
}
} else if (sourceIsFeatureClass && !targetIsFeatureClass) {
// augmentations
ModelStaticAssignmentCell modelCell = createStaticAssignment(cell, (Property) targetEntity, targetFeatures);
if (modelCell != null) {
staticAssigments.add(modelCell);
}
} else {
// $NON-NLS-1$
throw new TranslationException("Unhandled combination");
}
}
return new ModelAlignment(classMappings, attributeMappings, staticAssigments);
}
use of eu.esdihumboldt.commons.goml.omwg.FeatureClass in project hale by halestudio.
the class AlignmentToModelAlignmentDigester method createAttribute.
private ModelAttributeMappingCell createAttribute(ICell original, Property sourceEntity, Property targetEntity, Map<String, SchemaElement> sourceFeatures, Map<String, SchemaElement> targetFeatures) {
// FIXME what about composed properties?
if (sourceEntity instanceof ComposedProperty || targetEntity instanceof ComposedProperty) {
// $NON-NLS-1$
report.setFailed(original, "Composed properties not supported");
return null;
}
List<FeatureClass> filter = sourceEntity.getDomainRestriction();
if (filter != null && !filter.isEmpty()) {
// $NON-NLS-1$
report.setWarning(original, "Filters on attributive functions currently not supported in the RIF export");
}
String function = sourceEntity.getTransformation().getService().getLocation();
if (!RenameAttributeFunction.class.getName().equals(function)) {
// $NON-NLS-1$ //$NON-NLS-2$
report.setWarning(original, "Function " + function + " not recognized");
}
IDetailedAbout sourceAbout = DetailedAbout.getDetailedAbout(sourceEntity.getAbout(), true);
IDetailedAbout targetAbout = DetailedAbout.getDetailedAbout(targetEntity.getAbout(), true);
try {
return new ModelAttributeMappingCell(createAttributePath(sourceAbout, sourceFeatures), createAttributePath(targetAbout, targetFeatures));
} catch (TranslationException e) {
report.setFailed(original, e.getMessage());
return null;
}
}
use of eu.esdihumboldt.commons.goml.omwg.FeatureClass in project hale by halestudio.
the class MismatchPropertiesBlock method getDummyCell.
private Object getDummyCell() {
Mismatch a = new Mismatch(MismatchType.AggregationLevelMismatch);
a.setReason(new Reason(new FeatureClass(new About("FC1")), new FeatureClass(new About("FC2")), EntityCharacteristic.AssociationCardinalityConstraint));
a.getConsequences().add(new Consequence());
a.getConsequences().add(new Consequence());
a.getConsequences().add(new Consequence());
a.setProvenance("HALE MDL Inference Engine");
Mismatch b = new Mismatch(MismatchType.StructureMismatch);
b.setReason(new Reason(new Property(new About("Prop1Name")), new Property(new About("Prop2Name")), EntityCharacteristic.AttributeTypeConstraint));
b.getReason().setReasonRule(new ReasonRule(new ReasonSet("Prop1Name"), new ReasonSet("Prop2Name")));
List<ReasonCondition> conditions = new ArrayList<ReasonCondition>();
conditions.add(new ReasonCondition("attributeName", "attributeFilterValue", null));
b.getReason().getReasonRule().getSet1().setConditions(conditions);
b.getReason().getReasonRule().getSet1().setSubSet(new ReasonSet("SubProp1Name"));
b.getConsequences().add(new Consequence());
b.setProvenance("User");
Mismatch c = new Mismatch(MismatchType.AbstractionMismatch);
c.setReason(new Reason(new Property(new About("Prop3Name")), new Property(new About("Prop4Name")), EntityCharacteristic.AttributeDerivedPopulatedValues));
c.getReason().setReasonRule(new ReasonRule(new ReasonSet("Prop3Name"), new ReasonSet("Prop4Name")));
c.getConsequences().add(new Consequence());
c.getConsequences().add(new Consequence());
c.setProvenance("HALE MDL Inference Engine");
MismatchCell mc = new MismatchCell();
mc.getMismatches().add(a);
mc.getMismatches().add(b);
mc.getMismatches().add(c);
return mc;
}
Aggregations