/** * */ function &rewriteURIsInResDescrModel(&$rd_m) { global $_PUBBY_DATASET; global $namespaces; $rew_rd_m = new MemModel(); // uri rewriting + regex filtering if ($_PUBBY_DATASET['datasetURIPattern'] != '') { $l = strlen($_PUBBY_DATASET['datasetBase']); $iter = $rd_m->getStatementIterator(); while ($iter->hasNext()) { $triple = $iter->next(); $subj = $triple->getSubject(); // if subjURI is a datasetURI & does not match the pattern if (stripos($subj->getURI(), $_PUBBY_DATASET['datasetBase']) === 0 && !preg_match($_PUBBY_DATASET['datasetURIPattern'], substr($subj->getURI(), $l))) { continue; } else { // if predURI is a datasetURI & does not match the pattern $pred = $triple->getPredicate(); if (stripos($pred->getURI(), $_PUBBY_DATASET['datasetBase']) === 0 && !preg_match($_PUBBY_DATASET['datasetURIPattern'], substr($pred->getURI(), $l))) { continue; } else { // if obj is a Literal & objeURI is a datasetURI & does not match the pattern $obj = $triple->getObject(); if (!is_a($obj, "Literal")) { if (stripos($obj->getURI(), $_PUBBY_DATASET['datasetBase']) === 0 && !preg_match($_PUBBY_DATASET['datasetURIPattern'], substr($obj->getURI(), $l))) { continue; } else { $obj = new Resource(RAPpubbyURIrewriter::datasetURItoPubbyURI($obj->getURI())); } } $subj = new Resource(RAPpubbyURIrewriter::datasetURItoPubbyURI($subj->getURI())); $pred = new Resource(RAPpubbyURIrewriter::datasetURItoPubbyURI($pred->getURI())); $rew_rd_m->add(new Statement($subj, $pred, $obj)); } } } } else { $iter = $rd_m->getStatementIterator(); while ($iter->hasNext()) { $triple = $iter->next(); $subj = new Resource(RAPpubbyURIrewriter::datasetURItoPubbyURI($triple->getSubject()->getURI())); $pred = new Resource(RAPpubbyURIrewriter::datasetURItoPubbyURI($triple->getPredicate()->getURI())); $obj = $triple->getObject(); if (!is_a($obj, "Literal")) { $obj = new Resource(RAPpubbyURIrewriter::datasetURItoPubbyURI($obj->getURI())); } $rew_rd_m->add(new Statement($subj, $pred, $obj)); } } return $rew_rd_m; }
// ---------------------------------------------------------------------------------- // RAP_Pubby - A Linked Data Frontend for RAP // ---------------------------------------------------------------------------------- /** * Installation information is found in the RAP_Pubby documentation. * * @author Radoslaw Oldakowski <*****@*****.**> * @version 1.0, 19.12.2007 * @package rap-pubby */ include_once 'config.php'; $ds = new RAPpubbyDataset(); $http_reqest_URI = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; // index resource if ($http_reqest_URI == PUBBY_WEBBASE) { $http_reqest_URI = RAPpubbyURIrewriter::datasetURItoPubbyURI(PUBBY_INDEX_RESOURCE); } switch (substr($http_reqest_URI, strlen(PUBBY_WEBBASE), 4)) { case 'data': $resURI = RAPpubbyURIrewriter::dataURItoResURI($http_reqest_URI, $_SERVER['QUERY_STRING']); $rd =& $ds->getResDescr($resURI, $_PUBBY_DATASET['rdfDocumentMetadata']); if ($rd->isEmpty()) { header('HTTP/1.1 404 Not Found'); header('Content-type: text/html;charset=utf-8'); $c = "Nothing known about <{$resURI}>"; header('Content-length: ' . strlen($c)); echo $c; break; } // valid query string: 'output='(xml|n3) if (!strcasecmp($_SERVER['QUERY_STRING'], 'output=n3')) {