SunsetProv.Dataset<-function(recipe, data){
   
  #fcst definition (Dataset+Datasubset)
  if(!is.null(data$fcst)){
    graph_fcst<-Prov.Dataset(recipe, data, type="fcst")
    graph_fcst<-Prov.DatasetSubset(recipe, data, graph_fcst)
    graph_fcst<-Prov.Reggriding(recipe, data, graph_fcst)
  }
  #hcst definition (Dataset+Datasubset)
  graph_hcst<-Prov.Dataset(recipe, data, type="hcst")
  graph_hcst<-Prov.DatasetSubset(recipe, data, graph_hcst)
  graph_hcst<-Prov.Reggriding(recipe, data, graph_hcst)

  #obs definition (Dataset+Datasubset)
  graph_obs<-Prov.Dataset(recipe, data, type="obs")
  graph_obs<-Prov.DatasetSubset(recipe, data, graph_obs)
  graph_obs<-Prov.Reggriding(recipe, data, graph_obs)
 
  if(!is.null(data$fcst)){
    graph<-my_union_graph(graph_fcst$graph,graph_hcst$graph,graph_obs$graph)
    graph<-SunsetProv.Command(graph, package="Loading", version="2.0.0", fun="modules/Loading/Loading.R", arg.list=list("recipe"="Recipe","Data"="Data"), 
                             origin.node.name=list(graph_fcst$parentnodename,graph_hcst$parentnodename,graph_obs$parentnodename,"DatasetSubset_fcst","DatasetSubset_hcst","DatasetSubset_obs"))
    graph<-list("graph"=graph, "parentnodename"=list("parentnodename_fcst"=graph_fcst$parentnodename, "parentnodename_hcst"=graph_hcst$parentnodename,
                                                     "parentnodename_obs"=graph_obs$parentnodename))
  } else{
    graph<-my_union_graph(graph_hcst$graph,graph_obs$graph)
    graph<-SunsetProv.Command(graph, package="Loading", version="2.0.0", fun="modules/Loading/Loading.R", arg.list=list("recipe"="Recipe","Data"="Data"), 
                             origin.node.name=list(graph_hcst$parentnodename,graph_obs$parentnodename,"DatasetSubset_hcst","DatasetSubset_obs"))
    graph<-list("graph"=graph, "parentnodename"=list("parentnodename_hcst"=graph_hcst$parentnodename,"parentnodename_obs"=graph_obs$parentnodename))   
  }
  
  return(graph)
}