Map<Integer, Resource> termResources = new HashMap<Integer, Resource>();
// handle kam nodes first
Iterator<KamNode> kamNodes = kam.getNodes().iterator();
while (kamNodes.hasNext()) {
KamNode kamNode = kamNodes.next();
// TODO: This is a sanity check that should be removed as LIST is not a KAM function type
if (FunctionEnum.LIST == kamNode.getFunctionType()) {
System.err.println("Invalid KAM node type found: "
+ kamNode.getFunctionType().getDisplayValue());
continue;
}
Resource functionResource = model.getResource(KAMVocabulary
.resourceForFunction(kamNode.getFunctionType()).getURI());
// Retrieve seen KAMNode Resource or create a new Blank Node for it.
Resource kamNodeResource;
if (kamNodeResources.containsKey(kamNode)) {
kamNodeResource = kamNodeResources.get(kamNode);
} else {
kamNodeResource = model.createResource(new AnonId(UUID
.randomUUID().toString()));
// associate kam node with kam resource
kamResource.addProperty(composedOf, kamNodeResource);
}
// node type KAMNode
kamNodeResource.addProperty(RDF.type, KAMNode);
// node hasFunction Function
kamNodeResource.addProperty(hasFunction, functionResource);
// node hasId "1"^^xsd:int
kamNodeResource.addLiteral(hasId,
model.createTypedLiteral(kamNode.getId()));
// node hasLabel "p(EG:207)"^^xsd:string
kamNodeResource.addLiteral(hasLabel,
model.createTypedLiteral(kamNode.getLabel()));
// hold on to kam node resources
kamNodeResources.put(kamNode, kamNodeResource);
// handle terms for this KAMNode
// TODO Support nested terms instead of just Parameters!
List<BelTerm> terms = kAMStore.getSupportingTerms(kamNode);
for (BelTerm term : terms) {
Resource termResource = model.createResource(new AnonId(UUID
.randomUUID().toString()));
termResource.addProperty(RDF.type, Term);
termResource.addProperty(hasId,
model.createTypedLiteral(term.getId()));
termResource.addProperty(hasLabel,
model.createTypedLiteral(term.getLabel()));
termResource.addProperty(hasFunction,
resourceForFunction(kamNode.getFunctionType()));
RDFList argumentres = model.createList();
List<TermParameter> termParameters =
kAMStore.getTermParameters(kamInfo, term);