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 }
|