function _doFindFromFile($file, &$model)
 {
     $nullVarURIs = array('var:x', 'var:y', 'var:z');
     $mod = new MemModel();
     $mod->load($file);
     $return = new MemModel();
     foreach ($mod->triples as $statement) {
         if (in_array($statement->getLabelSubject(), $nullVarURIs)) {
             $findS = null;
         } else {
             $findS = $statement->getSubject();
         }
         if (in_array($statement->getLabelPredicate(), $nullVarURIs)) {
             $findP = null;
         } else {
             $findP = $statement->getPredicate();
         }
         if (in_array($statement->getLabelObject(), $nullVarURIs)) {
             $findO = null;
         } else {
             $findO = $statement->getObject();
         }
         $return->addModel($model->find($findS, $findP, $findO));
     }
     return $return;
 }
示例#2
0
 function testRdfParser()
 {
     $_SESSION['test'] = 'Rdf- Parser Empty Resource test';
     $mod1 = new MemModel();
     $mod2 = new MemModel();
     $mod1->load('emptyResource.rdf');
     $mod2->load('emptyResource_serialized.rdf');
     if ($mod1->equals($mod2)) {
         $pass = true;
     } else {
         $pass = false;
     }
     $this->assertTrue($pass);
 }
示例#3
0
 function testIsEquals()
 {
     foreach ($_SESSION['rdf_positive_tests'] as $key => $value) {
         $model1 = new MemModel();
         $model2 = new MemModel();
         $file = $value;
         $_SESSION['test'] =& $value;
         $_SESSION['key'] =& $key;
         $model1->load(TESTCASES_DIR . $file . ".rdf");
         $_SESSION['mod1'] = $model1;
         $model2->load(TESTCASES_DIR . $file . ".nt");
         $_SESSION['mod2'] = $model2;
         $this->assertTrue($model1->equals($model2));
     }
 }
 /**
  * loads namespaces from file or rewrites from configuration model
  */
 function loadNamespaces($url)
 {
     if ($url) {
         $nmsp_m = new MemModel();
         $nmsp_m->load($url);
         $this->ns = $nmsp_m->getParsedNamespaces();
         if (!$this->ns) {
             trigger_error("The file:" . $url . "does not contain any namespace declarations." . "The prefixes from the configuration model will be used instead");
         }
     } else {
         $nmsp = $this->m->getParsedNamespaces();
         if ($nmsp) {
             $this->ns = RAPpubbyURIrewriter::rewrNamespaces($nmsp);
         }
     }
 }
 /**
  * parser overwrites the prefixes defined in the default_prefixes array
  */
 function testOverwritingDefaultParser()
 {
     $_SESSION['test'] = 'Overwriting default parser test';
     $string = "<?xml version='1.0'?>\n \t\t\t\t<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'\n             \t\t\txmlns:exterms='http://www.example.org/terms/'>\n\t\t\t\t\t<rdf:Description rdf:about='http://www.example.org/index.html'>\n\t\t\t\t\t\t<exterms:creation-date>August 16, 1999</exterms:creation-date>\n\t\t\t\t\t</rdf:Description>\n\t\t\t\t</rdf:RDF>";
     // delete default prefixes
     global $default_prefixes;
     $backup = $default_prefixes;
     foreach ($default_prefixes as $name => $pref) {
         unset($default_prefixes[$name]);
     }
     $default_prefixes = array('foo' => RDF_NAMESPACE_URI);
     $model = new MemModel();
     $model->load($string);
     $nmsp = $model->getParsedNamespaces();
     $this->assertEqual($nmsp[RDF_NAMESPACE_URI], 'rdf');
     $default_prefixes = $backup;
 }
 function testRdfSerializer()
 {
     $_SESSION['test'] = 'Rdf- Parser Empty Resource test';
     $mod1 = new MemModel();
     $mod2 = new MemModel();
     $mod3 = new MemModel();
     $mod1->load('multipleTypes.rdf');
     $mod1->saveAs('mt1.rdf', 'rdf');
     $mod3->load('mt1.rdf');
     $mod2->load('multipleTypes.rdf');
     $_SESSION['mod1'] = $mod3;
     $_SESSIOn['mod2'] = $mod2;
     if ($mod3->equals($mod2)) {
         $pass = true;
     } else {
         $pass = false;
     }
     $this->assertTrue($pass);
 }
    function testGetModelByRDQL6()
    {
        if (isset($model2)) {
        }
        unset($model2);
        $_SESSION['test'] = 'simple rdql query6';
        $model = new MemModel();
        $model->load('employees.rdf');
        $query = '  SELECT ?resource, ?email
WHERE (?resource, vcard:N, ?blank1)
      (?blank1, vcard:Family, ?familyName)
      (?resource, vcard:EMAIL, ?blank2)
      (?blank2, rdf:value, ?email)
      (?blank2, rdf:type, vcard:work)
AND ?familyName ~~ "/^M/"
USING vcard FOR <http://www.w3.org/2001/vcard-rdf/3.0#>';
        $model2 = $model->getMemModelByRDQL($query);
        $this->assertEqual($model2->size(), 5);
    }
define("RDFAPI_INCLUDE_DIR", "./../api/");
include RDFAPI_INCLUDE_DIR . "RdfAPI.php";
## 1. Connect to MsAccess database (via ODBC)
## ------------------------------------------
// Connect to MsAccess (rdf_db DSN) database using connection settings
// defined in constants.php :
$rdf_database = new DbStore();
## 2. Store a memory model in database.
## ------------------------------------
// Load an RDF-Documtent into a memory model
// Filename of an RDF document
$base = "example1.rdf";
// Create a new memory model
$memModel = new MemModel();
// Load and parse document
$memModel->load($base);
// Now store the model in database
// An unique modelURI will be generated
$rdf_database->putModel($memModel);
// You can also provide an URI for the model to be stored
$modelURI = "example1.rdf";
// But then you must check if there already is a model with the same modelURI
// otherwise the method putModel() will return FALSE
if ($rdf_database->modelExists($modelURI)) {
    echo "Model with the same URI: '{$modelURI}' already exists";
} else {
    $rdf_database->putModel($memModel, $modelURI);
}
## 3. Create a new database model
## ------------------------------
$modelURI = "newDbModel";
示例#9
0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title>Test Traverse MemModel</title>
</head>
<body>

<?php 
define("RDFAPI_INCLUDE_DIR", "./../api/");
include RDFAPI_INCLUDE_DIR . "RdfAPI.php";
// Filename of an RDF document
$base = "example1.rdf";
// Create a new MemModel
$model = new MemModel();
// Load and parse document
$model->load($base);
// Get Iterator from model
$it = $model->getStatementIterator();
// Traverse model and output statements
while ($it->hasNext()) {
    $statement = $it->next();
    echo "Statement number: " . $it->getCurrentPosition() . "<BR>";
    echo "Subject: " . $statement->getLabelSubject() . "<BR>";
    echo "Predicate: " . $statement->getLabelPredicate() . "<BR>";
    echo "Object: " . $statement->getLabelObject() . "<P>";
}
// Move to the last statement and print it
$it->moveLast();
$statement = $it->current();
// Traverse model backward and print statements
echo $statement->toString() . "<BR>";
示例#10
0
            // Model not found in the database
            header('HTTP/1.0 404 Not Found');
            echo "404 - Model " . $model . " not found\n";
            return;
        }
    }
    if ($type == 'model') {
        $model1 = $database->getModel($modelURI);
    } else {
        $model1 = $database->getDatasetDb($modelURI);
    }
} elseif (substr($modelId, 0, 5) == "file:") {
    // File backed model
    $modelURI = substr($modelId, 5);
    $model1 = new MemModel();
    $model1->load($modelURI);
} else {
    // Undefined repository type
    header('HTTP/1.0 500 Internal Server Error');
    echo "500 - I don't understand " . $modelId;
}
// Process query or update operation
if ($_SERVER['QUERY_STRING'] != '') {
    $headers = getallheaders();
    if (isset($_REQUEST['op'])) {
        $op = $_REQUEST['op'];
        if ($op == "add") {
            // Add Operation
            if (NETAPI_ALLOW_ADD == True) {
                addStatementsToModel($model1, $headers['Content-Type'], $HTTP_RAW_POST_DATA);
            } else {
示例#11
0
 public function testAllTestgroupsNoReload()
 {
     echo "<b>SparqlDbTests</b><br/>\n";
     //prepare
     $parser = new SparqlParser();
     $strLastDataFile = null;
     foreach ($_SESSION['sparqlTestGroups'] as $arGroup) {
         if (isset($arGroup['deact'])) {
             continue;
         }
         //echo count($_SESSION[$arGroup['tests']]) . " tests\n";
         foreach ($_SESSION[$arGroup['tests']] as $name) {
             if (isset($name['type']) && ($name['type'] == 'syntax-negative' || $name['type'] == 'syntax-positive')) {
                 //skip syntax tests; they are run in SparqlParserTests
                 continue;
             }
             $checkfunc = $arGroup['checkfunc'];
             $fileData = null;
             $fileResult = null;
             $fileQuery = null;
             if (is_array($name)) {
                 if (isset($name['data'])) {
                     if (!file_exists(SPARQL_TESTFILES . $name['data'])) {
                         $fileData = 'data/' . $name['data'];
                     } else {
                         $fileData = $name['data'];
                     }
                 }
                 if (!file_exists(SPARQL_TESTFILES . $name['query'])) {
                     $fileQuery = 'query/' . $name['query'] . '.rq';
                 } else {
                     $fileQuery = $name['query'];
                 }
                 if (isset($name['result'])) {
                     if (!file_exists(SPARQL_TESTFILES . $name['result'])) {
                         $fileResult = 'result/' . $name['result'] . '.res';
                     } else {
                         $fileResult = $name['result'];
                     }
                 }
                 if (isset($name['title'])) {
                     $title = $name['title'];
                 } else {
                     $title = $name['query'];
                 }
             } else {
                 $fileData = 'data/' . $name . '.n3';
                 $fileQuery = 'query/' . $name . '.rq';
                 $fileResult = 'result/' . $name . '.res';
                 $title = $name;
             }
             if (in_array($title, $_SESSION['testSparqlDbTestsIgnores'])) {
                 if (isset($GLOBALS['debugTests'])) {
                     echo Console_Color::convert('%y');
                     echo '  ignoring ' . $title . "\n";
                     echo Console_Color::convert('%n');
                 }
                 continue;
             }
             //echo '  ' . $title . "\n";
             $_SESSION['test'] = $title . ' test';
             $e = null;
             if (isset($name['earl:name'])) {
                 //fix some weird issue with simpletest
                 $earlname = $name['earl:name'];
                 $this->signal('earl:name', $earlname);
             }
             if ($fileData != null && $fileData != $strLastDataFile) {
                 //re-use database if not changed
                 list($database, $dbModel) = $this->prepareDatabase();
                 //import statements into database
                 $dbModel->load(SPARQL_TESTFILES . $fileData, 'n3');
                 $strLastDataFile = $fileData;
             }
             $qs = file_get_contents(SPARQL_TESTFILES . $fileQuery);
             if ($fileResult !== null) {
                 $res = file_get_contents(SPARQL_TESTFILES . $fileResult);
                 if (substr($fileResult, -4) == '.srx') {
                     //Sparql XML result
                     $resParser = new SparqlResultParser();
                     $result = $resParser->parse($res);
                 } else {
                     if (substr($fileResult, -4) == '.rdf') {
                         //same format as .ttl, but serialized as xml
                         //rdf xml sorted
                         $resModel = new MemModel();
                         $resModel->load(SPARQL_TESTFILES . $fileResult, 'rdf');
                         $result = SparqlTestHelper::convertModelToResultArray($resModel);
                         unset($resModel);
                         $checkfunc = 'resultCheckSort';
                     } else {
                         if (substr($fileResult, -4) == '.res') {
                             //our own php code
                             unset($result);
                             eval($res);
                         } else {
                             if (substr($fileResult, -4) == '.ttl') {
                                 //N3
                                 $resModel = new MemModel();
                                 $resModel->load(SPARQL_TESTFILES . $fileResult, 'n3');
                                 $result = SparqlTestHelper::convertModelToResultArray($resModel);
                                 unset($resModel);
                             } else {
                                 throw new Exception('Unknown result format in ' . $fileResult);
                             }
                         }
                     }
                 }
             }
             try {
                 $q = $parser->parse($qs);
             } catch (Exception $e) {
                 //normal query failed to be parsed
                 $this->assertTrue(false, 'Query failed to be parsed');
                 if (!isset($GLOBALS['debugTests'])) {
                     //echo '  ' . $title . "\n";
                 } else {
                     echo Console_Color::convert('%RTest failed: ' . $title . "%n\n");
                     if (isset($e)) {
                         echo $e->getMessage() . "\n";
                         //var_dump($e);
                     }
                     echo $strQuery . "\n";
                     die;
                 }
             }
             try {
                 $t = $dbModel->sparqlQuery($qs);
                 if ($t instanceof MemModel) {
                     $bOk = $t->equals($result);
                 } else {
                     $bOk = SparqlTestHelper::$checkfunc($t, $result);
                 }
                 $this->assertTrue($bOk);
             } catch (Exception $e) {
                 $bOk = false;
                 $t = null;
                 //an exception is an error
                 if (isset($GLOBALS['debugTests'])) {
                     var_dump($e->getMessage());
                 }
                 $this->assertTrue(false);
             }
             if (!$bOk) {
                 if (!isset($GLOBALS['debugTests'])) {
                     //echo '  ' . $title . "\n";
                 } else {
                     echo Console_Color::convert('%RTest failed: ' . $title . "%n\n");
                     if ($e != null) {
                         echo get_class($e) . ': ' . $e->getMessage() . "\n";
                     }
                     echo ' Data: ' . $fileData . "\n";
                     echo 'Query string: ' . $qs . "\n";
                     echo "Expected:\n";
                     echo Console_Color::convert('%p');
                     var_dump($result);
                     echo Console_Color::convert('%n');
                     echo "Result:\n";
                     echo Console_Color::convert('%r');
                     var_dump($t);
                     echo Console_Color::convert('%n');
                     //var_dump($q);
                     die;
                 }
             }
             /**/
         }
         //            echo $arGroup['title'] . " done\n";
     }
 }