annotate src/org/qmul/eecs/c4dm/sia/SiaDimensionValueFactory.java @ 39:88362f5eefa3

iterates through dimValDimensionStmtIter and dimValValueStmtIter rather than just taking first value (and so as a result, takes the last value instead)
author stevenh
date Thu, 28 Mar 2013 19:41:54 +0000
parents 1e8f97ddaed3
children 88a8c6a05b5f
rev   line source
steve@0 1 package org.qmul.eecs.c4dm.sia;
steve@0 2
steve@0 3 import java.util.Vector;
steve@0 4
steve@0 5 import org.qmul.eecs.c4dm.sia.model.DimensionValue;
steve@0 6
steve@0 7 import com.hp.hpl.jena.ontology.OntModel;
stevenh@39 8 import com.hp.hpl.jena.ontology.OntResource;
steve@0 9 import com.hp.hpl.jena.rdf.model.Literal;
steve@0 10 import com.hp.hpl.jena.rdf.model.Property;
steve@0 11 import com.hp.hpl.jena.rdf.model.RDFNode;
steve@0 12 import com.hp.hpl.jena.rdf.model.Resource;
steve@0 13 import com.hp.hpl.jena.rdf.model.Statement;
steve@0 14 import com.hp.hpl.jena.rdf.model.StmtIterator;
steve@0 15
steve@0 16 public class SiaDimensionValueFactory {
steve@0 17
steve@0 18 public static Vector<DimensionValue> getDimensionValuesForResource(
steve@0 19 OntModel ontModel, Resource subject) {
steve@0 20 DimensionValue dimVal;
steve@0 21 StmtIterator dimValStmtIter;
steve@0 22 Property dimValProperty = ontModel.getOntProperty(DimensionValue.PROPERTY_URI);
steve@0 23 Property dimensionProperty = ontModel.getOntProperty(DimensionValue.DIMENSION_URI);
steve@0 24 Property valueProperty = ontModel.getOntProperty(DimensionValue.VALUE_URI);
steve@0 25 dimValStmtIter = ontModel.listStatements(subject, dimValProperty, (RDFNode)null);
steve@0 26
steve@0 27 Vector<DimensionValue> dimValsList = new Vector<DimensionValue>();
steve@0 28 StmtIterator dimValDimensionStmtIter;
steve@0 29 StmtIterator dimValValueStmtIter;
steve@0 30
steve@0 31 while (dimValStmtIter.hasNext())
steve@0 32 {
stevenh@12 33 Statement dimValStmt = dimValStmtIter.next();
steve@0 34 Resource dimValResource = dimValStmt.getResource();
steve@0 35
steve@0 36 dimValDimensionStmtIter = ontModel.listStatements(dimValResource, dimensionProperty, (RDFNode)null);
steve@0 37 dimValValueStmtIter = ontModel.listStatements(dimValResource, valueProperty, (RDFNode)null);
steve@0 38 dimVal = new DimensionValue();
steve@0 39
stevenh@39 40 // There should only be one statment here - if not, application behaviour is undefined
stevenh@39 41 while (dimValDimensionStmtIter.hasNext())
stevenh@39 42 {
stevenh@39 43 Statement dimValDimensionStmt = dimValDimensionStmtIter.next();
stevenh@39 44 Literal dimension = dimValDimensionStmt.getLiteral();
stevenh@39 45 dimVal.setDimension(dimension.getInt());
stevenh@39 46 }
steve@0 47
stevenh@39 48 // There should only be one statment here - if not, application behaviour is undefined
stevenh@39 49 while (dimValValueStmtIter.hasNext())
stevenh@39 50 {
stevenh@39 51 Statement dimValValueStmt = dimValValueStmtIter.next();
stevenh@39 52 Literal value = dimValValueStmt.getLiteral();
stevenh@39 53 dimVal.setValue(value.getDouble());
stevenh@39 54 }
steve@0 55
stevenh@12 56 dimValsList.add(dimVal);
steve@0 57 }
steve@0 58 return dimValsList;
steve@0 59 }
steve@0 60
steve@0 61 }