Skip to content
Snippets Groups Projects
Commit dddb1641 authored by alvaro's avatar alvaro
Browse files

Merge branch 'development'

parents 34d2544d 8f970126
No related branches found
No related tags found
No related merge requests found
......@@ -61,7 +61,7 @@ class Endpoint{
$r = json_decode($aux, true);
return $r;
}
}
}
public function queryPost($q){
$params = $this->params;
......
......@@ -50,9 +50,10 @@ class Queries{
echo $ex->getMessage();
}
$result = array();
if(sizeof($r['results']['bindings']) == 0){
/*if(sizeof($r['results']['bindings']) == 0){
return 'http://www.w3.org/2000/01/rdf-schema#Resource'; //default value if no type is present
}
}*/
//$result[] = 'http://www.w3.org/2000/01/rdf-schema#Resource'; //All resources are rdf:type rdfs:Resource
foreach($r['results']['bindings'] as $v){
$result[]= $v['class']['value'];
}
......
......@@ -174,7 +174,7 @@ class Utils{
}
private static function serializeRdf($data, $extension){
public static function serializeRdf($data, $extension='rdf'){
global $conf;
global $lodspk;
$ser;
......@@ -226,9 +226,6 @@ class Utils{
$extension = Utils::getExtension($contentType);
header('Content-Type: '.$contentType);
if($extension != 'html'){
$data = Utils::serializeRdf($data, $extension);
}
Utils::showView($lodspk, $data, $viewFile);
}
......@@ -427,6 +424,7 @@ class Utils{
$rPointer[$modelFile]['first'] = $rPointer[$modelFile][0];
}*/
}else{
$lodspk['resultRdf'] = true;
$rPointer[$strippedModelFile] = $aux;
}
}else{
......@@ -437,6 +435,7 @@ class Utils{
$rPointer['first'] = $rPointer[0];
}*/
}else{
$lodspk['resultRdf'] = true;
$rPointer = $aux;
}
}
......@@ -521,9 +520,12 @@ class Utils{
echo($data);
}elseif(is_file($lodspk['view'].$view)){
Haanga::Load($view, $vars);
}elseif($view == null){
$fnc = Haanga::compile('{{models|safe}}');
$fnc($vars, TRUE);
}else{
$fnc = Haanga::compile($view);
$fnc($vars, FALSE);
$fnc($vars, TRUE);
}
}
......
......@@ -14,133 +14,145 @@ class ServiceModule extends abstractModule{
return FALSE;
}
$extension = Utils::getExtension($acceptContentType);
$lodspk['model'] = $conf['home'].$conf['model']['directory'].$conf['service']['prefix'].$qArr[0]."/";
$lodspk['model'] = $conf['home'].$conf['model']['directory'].$conf['service']['prefix'].$qArr[0].'/';
$lodspk['view'] = $conf['home'].$conf['view']['directory'].$conf['service']['prefix'].$qArr[0].'/';
$viewFile = $extension.".template";
$modelFile = $extension.".queries";
if(file_exists($lodspk['model'].$modelFile) && file_exists($lodspk['view'].$viewFile) && $qArr[0] != null){
trigger_error("Using model ".$modelFile." and view ".$viewFile, E_USER_NOTICE);
return array($modelFile, $viewFile);
}elseif($extension != 'html' && file_exists($lodspk['model'].$conf['service']['prefix'].$qArr[0].'/html.queries')){
$modelFile = $conf['home'].$lodspk['model'].$conf['service']['prefix'].$qArr[0].'/html.queries';
$viewFile = null;
trigger_error("Using ".$modelFile." as model. It will be used as a CONSTRUCT", E_USER_NOTICE);
return array($modelFile, $viewFile);
if(file_exists($lodspk['model']) && file_exists($lodspk['view'])){
if(!file_exists($lodspk['view'].$viewFile)){
$viewFile = null;
}
if(file_exists($lodspk['model'].$modelFile) && $qArr[0] != null){
trigger_error("Using model ".$modelFile." and view ".$viewFile, E_USER_NOTICE);
return array($modelFile, $viewFile);
}elseif($extension != 'html' && file_exists($lodspk['model'].'/html.queries')){
$modelFile = 'html.queries';
trigger_error("Using ".$modelFile." as model. It will be used as a CONSTRUCT", E_USER_NOTICE);
return array($modelFile, $viewFile);
}else{
Utils::send406($uri);
exit(0);
}
}
return FALSE;
}
public function execute($service){
global $conf;
global $localUri;
global $uri;
global $acceptContentType;
global $endpoints;
global $lodspk;
global $first;
$context = array();
$context['contentType'] = $acceptContentType;
$context['endpoints'] = $endpoints;
//$sp = new SpecialFunction();
//$sp->execute($localUri, $context);
$f = $this->getFunction($localUri);
$params = array();
$params = $this->getParams($localUri);
//$params[] = $context;
$acceptContentType = Utils::getBestContentType($_SERVER['HTTP_ACCEPT']);
$extension = Utils::getExtension($acceptContentType);
$args = array();
list($modelFile, $viewFile) = $service;
try{
$prefixHeader = array();
public function execute($service){
global $conf;
global $localUri;
global $uri;
global $acceptContentType;
global $endpoints;
global $lodspk;
global $first;
$context = array();
$context['contentType'] = $acceptContentType;
$context['endpoints'] = $endpoints;
//$sp = new SpecialFunction();
//$sp->execute($localUri, $context);
$f = $this->getFunction($localUri);
$params = array();
$params = $this->getParams($localUri);
//$params[] = $context;
$acceptContentType = Utils::getBestContentType($_SERVER['HTTP_ACCEPT']);
$extension = Utils::getExtension($acceptContentType);
$args = array();
list($modelFile, $viewFile) = $service;
for($i=0;$i<sizeof($params);$i++){
if($conf['mirror_external_uris']){
$altUri = Utils::curie2uri($params[$i]);
$altUri = preg_replace("|^".$conf['basedir']."|", $conf['ns']['local'], $altUri);
$params[$i] = Utils::uri2curie($altUri);
try{
$prefixHeader = array();
for($i=0;$i<sizeof($params);$i++){
if($conf['mirror_external_uris']){
$altUri = Utils::curie2uri($params[$i]);
$altUri = preg_replace("|^".$conf['basedir']."|", $conf['ns']['local'], $altUri);
$params[$i] = Utils::uri2curie($altUri);
}
}
}
for($i=0;$i<sizeof($params);$i++){
$auxPrefix = Utils::getPrefix($params[$i]);
if($auxPrefix['ns'] != NULL){
$prefixHeader[] = $auxPrefix;
for($i=0;$i<sizeof($params);$i++){
$auxPrefix = Utils::getPrefix($params[$i]);
if($auxPrefix['ns'] != NULL){
$prefixHeader[] = $auxPrefix;
}
$args["arg".$i]=$params[$i];
}
$args["arg".$i]=$params[$i];
}
$results['params'] = $params;
$lodspk['home'] = $conf['basedir'];
$lodspk['baseUrl'] = $conf['basedir'];
$lodspk['module'] = 'service';
$lodspk['root'] = $conf['root'];
$lodspk['contentType'] = $acceptContentType;
$lodspk['ns'] = $conf['ns'];
$lodspk['this']['value'] = $uri;
$lodspk['this']['curie'] = Utils::uri2curie($uri);
$lodspk['this']['local'] = $localUri;
$lodspk['contentType'] = $acceptContentType;
$lodspk['endpoint'] = $conf['endpoint'];
$lodspk['type'] = $modelFile;
$lodspk['header'] = $prefixHeader;
$lodspk['args'] = $args;
$lodspk['add_mirrored_uris'] = false;
$lodspk['baseUrl'] = $conf['basedir'];
$lodspk['this']['value'] = $uri;
if($viewFile == null){
$lodspk['transform_select_query'] = true;
$results['params'] = $params;
$lodspk['home'] = $conf['basedir'];
$lodspk['baseUrl'] = $conf['basedir'];
$lodspk['module'] = 'service';
$lodspk['root'] = $conf['root'];
$lodspk['contentType'] = $acceptContentType;
$lodspk['ns'] = $conf['ns'];
$lodspk['this']['value'] = $uri;
$lodspk['this']['curie'] = Utils::uri2curie($uri);
$lodspk['this']['local'] = $localUri;
$lodspk['contentType'] = $acceptContentType;
$lodspk['endpoint'] = $conf['endpoint'];
$lodspk['type'] = $modelFile;
$lodspk['header'] = $prefixHeader;
$lodspk['args'] = $args;
$lodspk['add_mirrored_uris'] = false;
$lodspk['baseUrl'] = $conf['basedir'];
$lodspk['this']['value'] = $uri;
if($viewFile == null){
$lodspk['transform_select_query'] = true;
}
chdir($lodspk['model']);
Utils::queryFile($modelFile, $endpoints['local'], $results, $first);
if($lodspk['resultRdf']){
echo Utils::serializeRdf($results, $extension);
exit(0);
}else{
$results = Utils::internalize($results);
}
chdir($lodspk['model']);
Utils::queryFile($modelFile, $endpoints['local'], $results, $first);
$results = Utils::internalize($results);
$lodspk['first'] = Utils::getFirsts($results);
chdir($conf['home']);
if(is_array($results)){
$results = Convert::array_to_object($results);
$lodspk['first'] = Utils::getFirsts($results);
chdir($conf['home']);
if(is_array($results)){
$results = Convert::array_to_object($results);
}
//Need to redefine viewFile as 'local' i.e., inside service.foo/ so I can load files with the relative path correctly
//$viewFile = $extension.".template";
Utils::processDocument($viewFile, $lodspk, $results);
}catch (Exception $ex){
echo $ex->getMessage();
trigger_error($ex->getMessage(), E_ERROR);
Utils::send500($uri);
}
//Need to redefine viewFile as 'local' i.e., inside service.foo/ so I can load files with the relative path correctly
//$viewFile = $extension.".template";
Utils::processDocument($viewFile, $lodspk, $results);
}catch (Exception $ex){
echo $ex->getMessage();
trigger_error($ex->getMessage(), E_ERROR);
Utils::send500($uri);
exit(0);
}
exit(0);
}
protected function getFunction($uri){
global $conf;
$count = 1;
$prefixUri = $conf['basedir'];
$aux = str_replace($prefixUri, '', $uri, $count);
$functionAndParams = explode('/', $aux);
return $functionAndParams[0];
}
protected function getParams($uri){
global $conf;
$count = 1;
$prefixUri = $conf['basedir'];
$functionAndParams = explode('/', str_replace($prefixUri, '', $uri, $count));
if(sizeof($functionAndParams) > 1){
array_shift($functionAndParams);
return $functionAndParams;
}else{
return array(null);
protected function getFunction($uri){
global $conf;
$count = 1;
$prefixUri = $conf['basedir'];
$aux = str_replace($prefixUri, '', $uri, $count);
$functionAndParams = explode('/', $aux);
return $functionAndParams[0];
}
}
protected function getParams($uri){
global $conf;
$count = 1;
$prefixUri = $conf['basedir'];
$functionAndParams = explode('/', str_replace($prefixUri, '', $uri, $count));
if(sizeof($functionAndParams) > 1){
array_shift($functionAndParams);
return $functionAndParams;
}else{
return array(null);
}
}
}
?>
......@@ -60,14 +60,16 @@ class TypeModule extends abstractModule{
//Check if files for model and view exist
$t=Queries::getClass($uri, $endpoints['local']);
$obj = $this->getModelandView($t, $extension);
$obj = $this->getModelandView($t, $extension);
$modelFile = $obj['modelFile'];
$lodspk['model'] = $obj['modelDir'];
$lodspk['model'] = $conf['model']['directory'];
$viewFile = $obj['viewFile'];
$lodspk['view'] = $obj['viewDir'];
$lodspk['view'] = $obj['view']['directory'];
if($viewFile == null){
$lodspk['transform_select_query'] = true;
}
$lodspk['type'] = $modelFile;
$lodspk['home'] = $conf['basedir'];
$lodspk['baseUrl'] = $conf['basedir'];
$lodspk['module'] = 'type';
......@@ -75,16 +77,22 @@ class TypeModule extends abstractModule{
$lodspk['contentType'] = $acceptContentType;
$lodspk['ns'] = $conf['ns'];
$lodspk['endpoint'] = $conf['endpoint'];
$lodspk['view'] = $conf['view']['directory'];
$lodspk['add_mirrored_uris'] = true;
$lodspk['this']['value'] = $uri;
$lodspk['this']['curie'] = Utils::uri2curie($uri);
$lodspk['this']['local'] = $localUri;
$lodspk['this']['extension'] = $extension;
chdir($conf['home'].$lodspk['model']);
chdir($conf['home'].$conf['model']['directory']);
Utils::queryFile($modelFile, $endpoints['local'], $results, $first);
$results = Utils::internalize($results);
if($lodspk['resultRdf']){
echo Utils::serializeRdf($results, $extension);
exit(0);
}else{
$results = Utils::internalize($results);
}
$lodspk['first'] = Utils::getFirsts($results);
chdir($conf['home']);
if(is_array($results)){
......@@ -92,7 +100,8 @@ class TypeModule extends abstractModule{
}else{
$resultsObj = $results;
}
Utils::processDocument($viewFile, $lodspk, $resultsObj);
//chdir($conf['home'].$conf['model']['directory']);
Utils::processDocument($viewFile, $lodspk, $resultsObj);
}
......@@ -101,39 +110,45 @@ class TypeModule extends abstractModule{
global $results;
global $rPointer;
global $lodspk;
$objResult = array();
$objResult = array('modelFile' => null, 'viewFile' => null);
//Defining default views and models
$curieType="";
$objResult['modelFile'] = 'main.query';
$objResult['viewFile'] = null;//'html.template';
/* $objResult['modelFile'] = 'main.query';
$objResult['viewFile'] = 'html.template';
$objResult['modelDir'] = $conf['model']['directory'].'type.rdfs:Resource/html.queries/';
$objResult['viewDir'] = $conf['view']['directory'].'type.rdfs:Resource/';
*/
//Get the first type available
$typesAndValues = array();
$typesAndValues = array('rdfs:Resource' => -1);
foreach($t as $v){
$curie = Utils::uri2curie($v);
$typesAndValues[$curie] = 0;
if(isset($conf['types']['priorities'][$curie]) && $conf['types']['priorities'][$curie] >= 0){
$typesAndValues[$curie] = $conf['types']['priorities'][$curie];
if(isset($conf['type']['priorities'][$curie]) && $conf['type']['priorities'][$curie] >= 0){
$typesAndValues[$curie] = $conf['type']['priorities'][$curie];
}
}
arsort($typesAndValues);
foreach($typesAndValues as $v => $w){
$auxModelFile = $conf['model']['directory'].$conf['type']['prefix'].$v.'/';
$auxViewFile = $conf['view']['directory'].$conf['type']['prefix'].$v.'/';
if(file_exists($auxModelFile) && file_exists($auxViewFile) && $v != null){
$auxViewFile = $conf['view']['directory'].$conf['type']['prefix'].$v.'/'.$extension.'.template';
$auxModelFile = $conf['model']['directory'].$conf['type']['prefix'].$v.'/'.$extension.'.queries';
$objResult['viewFile'] = $extension.'.template';
$objResult['modelFile'] = $extension.'.queries';
break;
$auxModelFile = $conf['model']['directory'].$conf['type']['prefix'].$v.'/'.$extension.'.queries';
$auxViewFile = $conf['view']['directory'].$conf['type']['prefix'].$v.'/'.$extension.'.template';
if($v == null){continue;}
if(file_exists($auxModelFile)){
$objResult['modelFile'] = $conf['type']['prefix'].$v.'/'.$extension.'.queries';
if(file_exists($auxViewFile)){
$objResult['viewFile'] = $conf['type']['prefix'].$v.'/'.$extension.'.template';
}elseif($extension != 'html'){ //View doesn't exists (and is not HTML)
$objResult['viewFile'] = null;
}
return $objResult;
}elseif($extension != 'html' &&
file_exists($conf['model']['directory'].$conf['type']['prefix'].$v.'/html.queries')){
$auxViewFile = $conf['view']['directory'].$conf['type']['prefix'].$v.'/'.$extension.'.template';
$auxModelFile = $conf['model']['directory'].$conf['type']['prefix'].$v.'/'.$extension.'.queries';
$objResult['modelFile'] = $conf['type']['prefix'].$v.'/html.queries';
$objResult['viewFile'] = null;
$objResult['modelFile'] = $conf['type']['prefix'].$v.'/html.queries';
if(file_exists($auxViewFile) ){
$objResult['viewFile'] = $conf['type']['prefix'].$v.'/'.$extension.'.template';
}else{
$lodspk['transform_select_query'] = true;
$objResult['viewFile'] = null;
}
trigger_error("LODSPeaKr can't find the proper query. Using HTML query instead.", E_USER_NOTICE);
break;
}
......
......@@ -35,10 +35,16 @@ class UriModule extends abstractModule{
if($modelFile == NULL){
return FALSE;
}
return $pair;
$result = array( 'res' => $pair[0],
'page' => $pair[1],
'format' => $pair[2],
'modelFile' => $modelFile,
'viewFile' => $viewFile);
return $result;
}
public function execute($pair){
public function execute($p){
global $conf;
global $localUri;
global $uri;
......@@ -47,10 +53,14 @@ class UriModule extends abstractModule{
global $lodspk;
global $results;
global $first;
list($res, $page, $format) = $pair;
$res = $p['res'];
$page = $p['page'];
$format = $p['format'];
$modelFile = $p['modelFile'];
$viewFile = $p['viewFile'];
$uri = $res;
$curie = Utils::uri2curie($res);
//If resource is not the page, send a 303 to the document
if($res == $localUri){
Utils::send303($page, $acceptContentType);
......@@ -67,14 +77,14 @@ class UriModule extends abstractModule{
* dcterms:format for this page
*/
$acceptContentType = $format;
$curie = Utils::uri2curie($uri);
list($modelFile, $viewFile) = $this->getModelandView($curie, $extension);
if($modelFile == NULL){
return;
}
$lodspk = $conf['view']['standard'];
//$lodspk = $conf['view']['standard'];
$lodspk['type'] = $modelFile;
$lodspk['module'] = 'uri';
$lodspk['add_mirrored_uris'] = true;
......@@ -90,10 +100,13 @@ class UriModule extends abstractModule{
chdir($conf['home'].$conf['model']['directory']);
Utils::queryFile($modelFile, $endpoints['local'], $results, $first);
$results = Utils::internalize($results);
if($lodspk['resultRdf']){
echo Utils::serializeRdf($results, $extension);
exit(0);
}else{
$results = Utils::internalize($results);
}
$lodspk['first'] = Utils::getFirsts($results);
chdir($conf['home']);
if(is_array($results)){
......@@ -101,17 +114,43 @@ class UriModule extends abstractModule{
}else{
$resultsObj = $results;
}
if($conf['debug']){
trigger_error("Using template ".$viewFile, E_USER_NOTICE);
echo("TEMPLATE: ".$viewFile."\n\n");
}
Utils::processDocument($viewFile, $lodspk, $resultsObj);
}
private static function getModelandView($uri, $extension){
global $conf;
global $lodspk;
$auxViewFile = $conf['view']['directory'].$conf['uri']['prefix'].$uri.'/'.$extension.'.template';
$auxModelFile = $conf['model']['directory'].$conf['uri']['prefix'].$uri.'/'.$extension.'.queries';
if(file_exists($auxModelFile) && file_exists($auxViewFile) ){
$viewFile = $conf['uri']['prefix'].$uri.'/'.$extension.'.template';
if(file_exists($auxModelFile)){
//Model exists
$modelFile = $conf['uri']['prefix'].$uri.'/'.$extension.'.queries';
if(file_exists($auxViewFile) ){
//View exists, everything is fine
$viewFile = $conf['uri']['prefix'].$uri.'/'.$extension.'.template';
}elseif($extension != 'html'){
//View doesn't exists (and is not HTML)
$viewFile = null;
}else{
//No HTML representation as fallback, then not recognized by URI module
return array(null, null);
}
return array($modelFile, $viewFile);
}elseif($extension != 'html' && file_exists($conf['model']['directory'].$conf['uri']['prefix'].$uri.'/html.queries')){
$modelFile = $conf['uri']['prefix'].$uri.'/html.queries';
if(file_exists($auxViewFile) ){
//View exists, everything is fine
$viewFile = $conf['uri']['prefix'].$uri.'/'.$extension.'.template';
}elseif($extension != 'html'){
//View doesn't exists (and is not HTML)
$lodspk['transform_select_query'] = true;
$viewFile = null;
}
return array($modelFile, $viewFile);
}
return array(NULL, NULL);
......
......@@ -43,7 +43,7 @@ $conf['root'] = 'index.html';
$conf['extension_connector'] = '.';
//Priority for rdfs:Resource (default). Priorities should be >=0
$conf['types']['priorities']['rdfs:Resource'] = -1;
$conf['type']['priorities']['rdfs:Resource'] = -1;
//Debug
$conf['debug'] = false;
......
......@@ -6,6 +6,7 @@ root_htaccess="root.htaccess"
parent_htaccess="../.htaccess"
settings_file="settings.inc.php"
metadb="db.sqlite"
basedir="http://localhost/my/data/"
home=`basename \`pwd\`` # 'lodspeakr', the directory from git clone
ns=$basedir
......@@ -21,6 +22,9 @@ fi
back_one=`cd .. 2>/dev/null && pwd`
parent=`basename $back_one`
utils/create_db.sh $metadb
while [ "$everything_ok" != "y" ]; do
echo
echo "== Basic Information =="
......@@ -111,19 +115,6 @@ echo "WARNING: Copying $root_htaccess as .htaccess in parent directory"
echo ""
cp $root_htaccess $parent_htaccess
#Creating symlinks for turtle and ntriples
cd views
ln -s rdfs:Resource.view.rdf rdfs:Resource.view.nt
ln -s rdfs:Resource.view.rdf rdfs:Resource.view.ttl
ln -s rdfs:Resource.view.rdf rdfs:Resource.view.json
cd ../models
ln -s rdfs:Resource.model.rdf rdfs:Resource.model.nt
ln -s rdfs:Resource.model.rdf rdfs:Resource.model.ttl
ln -s rdfs:Resource.model.rdf rdfs:Resource.model.json
cd ..
mkdir cache
echo
......
File deleted
#!/bin/bash
if [[ "$1" = "" ]]; then
echo Usage: $0 sqliteFile
exit 1
fi
mkdir -p meta
cd meta
if [ ! -e $1 ]; then
SQLITE3=`which sqlite3`
if [ -z "$SQLITE3" ]; then
echo "SQLlite3 is required to continue installation. Please add it to your \$PATH."
exit 1
fi
$SQLITE3 $1 'CREATE TABLE document (uri varcharg(1000), doc varchar(1000), format varchar(50));'
else
echo "WARNING: SQLite database already exists."
fi
cd ..
<?
error_reporting(E_ERROR);
$s = 'settings.inc.php';
$c = file_get_contents($s);
$optionarray = Array('on' => 'true', '1' => 'true', 'off' => 'false', '0' =>'false');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment