A dataflow control apparatus comprising: a device-side metadata storage unit configured to store, for each of a plurality of devices, device-side metadata including at least information that indicates a specification of data that the device is capable of providing; an app-side metadata storage unit configured to store, for an application that uses data to provide a service, app-side metadata including at least information that indicates a specification of data that the application requires; a matching unit configured to extract a device capable of providing data that satisfies the specification that the application requires from among the plurality of devices, by matching the app-side metadata and the device-side metadata; and a dataflow instructing unit configured to generate and transmit a dataflow control command that instructs transmission of data, based on a result of the matching by the matching unit, wherein the dataflow instructing unit is configured to determine whether the extracted device is a virtual device configured to generate new data on a basis of data obtained from one or more original devices and output the generated new data as virtual data, or a real device, and in a case where the extracted device is a virtual device transmit, to the original device or an apparatus that manages the original device, a first dataflow control command instructing transmission of data from the original device to the virtual device; and transmit, to the virtual device or an apparatus that manages the virtual device, a second dataflow control command instructing transmission of virtual data from the virtual device to the application. a device-side metadata storage unit configured to store, for each of a plurality of devices, device-side metadata including at least information that indicates a specification of data that the device is capable of providing; an app-side metadata storage unit configured to store, for an application that uses data to provide a service, app-side metadata including at least information that indicates a specification of data that the application requires; a matching unit configured to extract a device capable of providing data that satisfies the specification that the application requires from among the plurality of devices, by matching the app-side metadata and the device-side metadata; and a dataflow instructing unit configured to generate and transmit a dataflow control command that instructs transmission of data, based on a result of the matching by the matching unit, wherein the dataflow instructing unit is configured to determine whether the extracted device is a virtual device configured to generate new data on a basis of data obtained from one or more original devices and output the generated new data as virtual data, or a real device, and in a case where the extracted device is a virtual device transmit, to the original device or an apparatus that manages the original device, a first dataflow control command instructing transmission of data from the original device to the virtual device; and transmit, to the virtual device or an apparatus that manages the virtual device, a second dataflow control command instructing transmission of virtual data from the virtual device to the application.