A data management apparatus, comprising: a data storage apparatus configured to store a data graph representing interconnected resources, the data graph being encoded as a plurality of interconnected data items, each data item comprising a value for each of: a subject, being an identifier of a subject resource; an object, being either an identifier of an object resource or a literal value; and a predicate, being a named relationship between the subject and the object; a dynamic dataflow controller comprising a dynamic dataflow controller data storage apparatus, processor hardware, and memory hardware, and configured to store a plurality of processor instances on the dynamic dataflow controller data storage apparatus, each processor instance specifying an input range, a process, and an output range, the input range being specified by an RDF statement and the output range being specified by an Resource Description Framework, hereinafter RDF, statement, each processor instance being configured, when triggered by the provision of an input comprising a data item falling within the input range, to generate an output comprising a data item falling within the output range, by, at the processor hardware, performing the specified process on the input including storing data on the memory hardware during said performing; the dynamic dataflow controller being further configured to respond to a data modification event involving a data item falling within the input range of one of the stored processor instances by providing the data item involved in the data modification event to the one of the stored processor instances as the input; wherein the dynamic dataflow controller is further configured, following the generation of the output by the triggered processor instance, to provide a data item comprised in the output as the input to any processor instance, from among the plurality of processor instances, specifying an input range covering the data item comprised in the output. a data storage apparatus configured to store a data graph representing interconnected resources, the data graph being encoded as a plurality of interconnected data items, each data item comprising a value for each of: a subject, being an identifier of a subject resource; an object, being either an identifier of an object resource or a literal value; and a predicate, being a named relationship between the subject and the object; a dynamic dataflow controller comprising a dynamic dataflow controller data storage apparatus, processor hardware, and memory hardware, and configured to store a plurality of processor instances on the dynamic dataflow controller data storage apparatus, each processor instance specifying an input range, a process, and an output range, the input range being specified by an RDF statement and the output range being specified by an Resource Description Framework, hereinafter RDF, statement, each processor instance being configured, when triggered by the provision of an input comprising a data item falling within the input range, to generate an output comprising a data item falling within the output range, by, at the processor hardware, performing the specified process on the input including storing data on the memory hardware during said performing; the dynamic dataflow controller being further configured to respond to a data modification event involving a data item falling within the input range of one of the stored processor instances by providing the data item involved in the data modification event to the one of the stored processor instances as the input; wherein the dynamic dataflow controller is further configured, following the generation of the output by the triggered processor instance, to provide a data item comprised in the output as the input to any processor instance, from among the plurality of processor instances, specifying an input range covering the data item comprised in the output.