コード例 #1
0
 /**
  *
  */
 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;
 }
コード例 #2
0
// ----------------------------------------------------------------------------------
// 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')) {