use of eu.esdihumboldt.hale.io.oml.internal.goml.align.Alignment in project hale by halestudio.
the class OmlReader method loadAlignment.
@Override
protected MutableAlignment loadAlignment(ProgressIndicator progress, IOReporter reporter) throws IOProviderConfigurationException, IOException {
try {
progress.begin("Load ontology mapping file", ProgressIndicator.UNKNOWN);
OmlRdfReader reader = new OmlRdfReader();
Alignment alignment = reader.read(getSource().getLocation().toURL());
AlignmentBean align = new AlignmentBean();
List<CellBean> cells = new ArrayList<CellBean>();
List<ICell> map = alignment.getMap();
for (ICell cell : map) {
// create a new CellBean for each ICell
CellBean cellBean = new CellBean();
IEntity entity = cell.getEntity1();
IEntity entity2 = cell.getEntity2();
// temporary list to be copied into the CellBean
List<NamedEntityBean> temp_source = new ArrayList<NamedEntityBean>();
List<NamedEntityBean> temp_target = new ArrayList<NamedEntityBean>();
setBeanLists(entity, temp_source, getSourceSchema());
setBeanLists(entity2, temp_target, getTargetSchema());
// set source/target lists of the CellBean
cellBean.setSource(temp_source);
cellBean.setTarget(temp_target);
// check if one of the entities has a transformation
if (entity.getTransformation() != null || entity2.getTransformation() != null) {
// entity 1 if it has the transformation
if (entity.getTransformation() != null) {
setParameters(cellBean, entity, reporter, cell);
setTransformationId(cellBean, entity);
} else {
// else set parameters and transformation id from entity
// 2
setParameters(cellBean, entity2, reporter, cell);
setTransformationId(cellBean, entity2);
}
}
// add the CellBean to a list of CellBeans
cells.add(cellBean);
}
// set the cells for the alignment after the all iterations
align.setCells(cells);
MutableAlignment mutableAlignment = align.createAlignment(reporter, getSourceSchema(), getTargetSchema(), new PathUpdate(null, null));
reporter.setSuccess(true);
return mutableAlignment;
} finally {
progress.end();
}
}
use of eu.esdihumboldt.hale.io.oml.internal.goml.align.Alignment in project hale by halestudio.
the class OmlRdfReader method read.
/**
* Unmarshalls oml-mapping to the HUMBOLDT Alignment.
*
* @param rdfFile path to the oml-mapping file
* @return Alignment object
*/
public Alignment read(URL rdfFile) {
// 1. unmarshal rdf
JAXBContext jc;
JAXBElement<AlignmentType> root = null;
try {
jc = JAXBContext.newInstance(ALIGNMENT_CONTEXT, ObjectFactory.class.getClassLoader());
Unmarshaller u = jc.createUnmarshaller();
// it will debug problems while unmarshalling
u.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler());
root = u.unmarshal(new StreamSource(rdfFile.openStream()), AlignmentType.class);
/*
* root = u.unmarshal(new StreamSource(new File(rdfFile)),
* AlignmentType.class);
*/
} catch (Exception e) {
throw new IllegalStateException("Failed to read alignment", e);
}
AlignmentType genAlignment = root.getValue();
// 2. create humboldt alignment object and fulfill the required fields
Alignment al = new Alignment();
// set about
al.setAbout(new About(UUID.randomUUID()));
// set level
if (genAlignment.getLevel() != null) {
al.setLevel(genAlignment.getLevel());
}
// set map with cells
if (genAlignment.getMap() != null) {
al.setMap(getMap(genAlignment.getMap()));
}
// set schema1,2 containing information about ontologies1,2
if (genAlignment.getOnto1() != null && genAlignment.getOnto1().getOntology() != null) {
al.setSchema1(getSchema(genAlignment.getOnto1().getOntology()));
}
if (genAlignment.getOnto2() != null && genAlignment.getOnto2().getOntology() != null) {
al.setSchema2(getSchema(genAlignment.getOnto2().getOntology()));
}
// set Value Class
if (genAlignment.getValueClass() != null) {
al.setValueClass(getValueClass(genAlignment.getValueClass()));
}
return al;
}
Aggregations