Mercurial > hg > semantic-sia
view src/org/qmul/eecs/c4dm/sia/SiaDimensionValueFactory.java @ 94:fedf516f6a78 tip
test file
author | stevenh |
---|---|
date | Mon, 29 Dec 2014 15:16:22 +0000 |
parents | 7f3a6cf478bc |
children |
line wrap: on
line source
package org.qmul.eecs.c4dm.sia; import java.util.Vector; import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; import org.qmul.eecs.c4dm.sia.model.Datapoint; import org.qmul.eecs.c4dm.sia.model.DimensionValue; import org.qmul.eecs.c4dm.sia.model.VectorTableElement; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.StmtIterator; public class SiaDimensionValueFactory { public static Vector<DimensionValue> getDimensionValuesForVectorTableElement(VectorTableElement vte) throws DimensionException { Datapoint fromDatapoint = vte.getFromDatapoint(); Datapoint toDatapoint = vte.getToDatapoint(); int dimensionality = fromDatapoint.getDimensionValues().size(); Vector<DimensionValue> dimVals = new Vector<DimensionValue>(); for (int dim = 1; dim <= dimensionality; dim++) { double val = toDatapoint.getDimensionValue(dim) - fromDatapoint.getDimensionValue(dim); DimensionValue dimVal = new DimensionValue(); dimVal.setDimension(dim); dimVal.setValue(val); dimVals.add(dimVal); } return dimVals; } public static Vector<DimensionValue> getDimensionValuesForResource( OntModel ontModel, Resource subject) { DimensionValue dimVal; StmtIterator dimValStmtIter; Property dimValProperty = ontModel.getOntProperty(DimensionValue.PROPERTY_URI); Property dimensionProperty = ontModel.getOntProperty(DimensionValue.DIMENSION_URI); Property valueProperty = ontModel.getOntProperty(DimensionValue.VALUE_URI); dimValStmtIter = ontModel.listStatements(subject, dimValProperty, (RDFNode)null); Vector<DimensionValue> dimValsList = new Vector<DimensionValue>(); StmtIterator dimValDimensionStmtIter; StmtIterator dimValValueStmtIter; while (dimValStmtIter.hasNext()) { Statement dimValStmt = dimValStmtIter.next(); Resource dimValResource = dimValStmt.getResource(); dimValDimensionStmtIter = ontModel.listStatements(dimValResource, dimensionProperty, (RDFNode)null); dimValValueStmtIter = ontModel.listStatements(dimValResource, valueProperty, (RDFNode)null); dimVal = new DimensionValue(); dimVal.setResource(dimValResource); // There should only be one statment here - if not, application behaviour is undefined while (dimValDimensionStmtIter.hasNext()) { Statement dimValDimensionStmt = dimValDimensionStmtIter.next(); Literal dimension = dimValDimensionStmt.getLiteral(); dimVal.setDimension(dimension.getInt()); } // There should only be one statment here - if not, application behaviour is undefined while (dimValValueStmtIter.hasNext()) { Statement dimValValueStmt = dimValValueStmtIter.next(); Literal value = dimValValueStmt.getLiteral(); dimVal.setValue(value.getDouble()); } dimValsList.add(dimVal); } return dimValsList; } }