Property has_input_property = model.getProperty(Namespaces.KARMA + "hasInput");
Property has_output_property = model.getProperty(Namespaces.KARMA + "hasOutput");
Resource service_resource = model.getResource(service_uri);
NodeIterator nodeIterator = null;
RDFNode node = null;
// service name
nodeIterator = model.listObjectsOfProperty(service_resource, has_name_property);
if (nodeIterator.hasNext() && (node = nodeIterator.next()).isLiteral()) {
service_name = node.asLiteral().getString();
logger.debug("service name: " + service_name);
} else
logger.debug("service does not have a name.");
// service address
nodeIterator = model.listObjectsOfProperty(service_resource, has_address_property);
if (nodeIterator.hasNext() && (node = nodeIterator.next()).isLiteral()) {
service_address = node.asLiteral().getString();
logger.debug("service address: " + service_address);
} else
logger.debug("service does not have an address.");
// service method
nodeIterator = model.listObjectsOfProperty(service_resource, has_method_property);
if (nodeIterator.hasNext() && (node = nodeIterator.next()).isLiteral()) {
service_method = node.asLiteral().getString();
logger.debug("service method: " + service_method);
} else
logger.debug("service does not have a method.");
List<String> variables = null;
List<Attribute> inputAttributes = null;
List<Attribute> outputAttributes = null;
edu.isi.karma.rep.model.Model inputModel = null;
edu.isi.karma.rep.model.Model outputModel = null;
// service variables
variables = getVariables(model, service_resource);
// service input
nodeIterator = model.listObjectsOfProperty(service_resource, has_input_property);
if (nodeIterator.hasNext() && (node = nodeIterator.next()).isResource()) {
inputAttributes = getAttributes(model, node.asResource(), IOType.INPUT);
inputModel = getSemanticModel(model, node.asResource());
} else
logger.debug("service does not have an input.");
// service output
nodeIterator = model.listObjectsOfProperty(service_resource, has_output_property);
if (nodeIterator.hasNext() && (node = nodeIterator.next()).isResource()) {
outputAttributes = getAttributes(model, node.asResource(), IOType.OUTPUT );
outputModel = getSemanticModel(model, node.asResource());
} else
logger.info("service does not have an output.");