/**
* Create the DCAT document of the published (non-draft) resources
*
* @param $pieces array of uri pieces
* @return mixed \Data object with a graph of DCAT information
*/
private function createDcat()
{
$ns = $this->dcat->getNamespaces();
foreach ($ns as $prefix => $uri) {
\EasyRdf_Namespace::set($prefix, $uri);
}
// Apply paging when fetching the definitions
list($limit, $offset) = Pager::calculateLimitAndOffset();
$definition_count = $this->definitions->countPublished();
$definitions = $this->definitions->getAllPublished($limit, $offset);
$oldest = $this->definitions->getOldest();
$describedDefinitions = array();
// Add the source type description to the definition
foreach ($definitions as $definition) {
$definition = array_merge($definition, $this->definitions->getFullDescription($definition['collection_uri'] . '/' . $definition['resource_name']));
array_push($describedDefinitions, $definition);
}
$graph = $this->dcat->getDcatDocument($describedDefinitions, $oldest);
// Return the dcat feed in our internal data object
$data_result = new Data();
$data_result->data = $graph;
$data_result->is_semantic = true;
$data_result->paging = Pager::calculatePagingHeaders($limit, $offset, $definition_count);
// Add the semantic configuration for the ARC graph
$data_result->semantic = new \stdClass();
$data_result->semantic->conf = array('ns' => $ns);
$data_result->definition = new \stdClass();
$data_result->definition->resource_name = 'dcat';
$data_result->definition->collection_uri = 'info';
return $data_result;
}