A software service execution system, comprising: a software library, storing a plurality of software services, each software service being configured, upon execution, to obtain input data from a specified input URI, execute processing on the obtained input data, and output the result of the processing to a specified output URI; a metadata graph representing the plurality of software services, each software service being identifiable in the metadata graph by a predicate defining a relationship between a subject vertex and an object vertex, the subject vertex storing the specified input URI and being linked by a directed edge labelled with the predicate to the object vertex storing the specified output URI; a metadata graph query interface, configured to receive a query, in graph query language, the received query requesting, as a variable, a queried vertex, and specifying a value of a source vertex, the metadata graph query interface being configured to translate the received query into a defined traversal path along one or more edges from the metadata graph, each labelled with a respective specified predicate from among the predicates in the metadata graph, from the source vertex to the queried vertex; a software service execution controller, configured to control the execution of the one or more software services identified by the one or more specified predicates labelling edges on the defined traversal path, in an order determined by the defined traversal path, wherein the software service execution controller is configured to control the execution of the one or more software services identified by the one or more specified predicates labelling edges on the defined traversal path by, for the or each vertex between the source vertex and the query vertex on the defined traversal path, providing the result of the processing of the software service identified by the labelled edge on a source-vertex-side of the respective vertex as input data to the software service on a query-vertex-side of the respective vertex; the metadata graph query interface being configured to respond to the received query with a value of the queried vertex, the value being generated by executing the software service identified by the label of the labelled edge linking to the queried vertex along the defined traversal path from the source vertex. a software library, storing a plurality of software services, each software service being configured, upon execution, to obtain input data from a specified input URI, execute processing on the obtained input data, and output the result of the processing to a specified output URI; a metadata graph representing the plurality of software services, each software service being identifiable in the metadata graph by a predicate defining a relationship between a subject vertex and an object vertex, the subject vertex storing the specified input URI and being linked by a directed edge labelled with the predicate to the object vertex storing the specified output URI; a metadata graph query interface, configured to receive a query, in graph query language, the received query requesting, as a variable, a queried vertex, and specifying a value of a source vertex, the metadata graph query interface being configured to translate the received query into a defined traversal path along one or more edges from the metadata graph, each labelled with a respective specified predicate from among the predicates in the metadata graph, from the source vertex to the queried vertex; a software service execution controller, configured to control the execution of the one or more software services identified by the one or more specified predicates labelling edges on the defined traversal path, in an order determined by the defined traversal path, wherein the software service execution controller is configured to control the execution of the one or more software services identified by the one or more specified predicates labelling edges on the defined traversal path by, for the or each vertex between the source vertex and the query vertex on the defined traversal path, providing the result of the processing of the software service identified by the labelled edge on a source-vertex-side of the respective vertex as input data to the software service on a query-vertex-side of the respective vertex; the metadata graph query interface being configured to respond to the received query with a value of the queried vertex, the value being generated by executing the software service identified by the label of the labelled edge linking to the queried vertex along the defined traversal path from the source vertex.