diff --git a/classes/Queries.php b/classes/Queries.php index 533f7383abfbbda0c89684c4db9e05be160c9c14..ca3c1c9b2285cd916d9d944bcbb9943ee3dc6055 100644 --- a/classes/Queries.php +++ b/classes/Queries.php @@ -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']; } diff --git a/classes/Utils.php b/classes/Utils.php index 9f936edc98d77e9c1e047ec346ec526489d68577..c4b3689a1a135cfc6672eacb7aa0e301d06ad95c 100644 --- a/classes/Utils.php +++ b/classes/Utils.php @@ -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); } diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php index 487b55a679c809b964fe16ce7bd0b6ba62eee987..29b44bc654c9eb24a2838fba1aeedf93b4a3663c 100644 --- a/classes/modules/serviceModule.php +++ b/classes/modules/serviceModule.php @@ -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); + } + } + } ?> diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php index 7f5f7592f73326235287b2a5de8a6d0737c5aa81..d1c2becca37101636f7e9051ad42aba4e7d48983 100644 --- a/classes/modules/typeModule.php +++ b/classes/modules/typeModule.php @@ -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; } diff --git a/classes/modules/uriModule.php b/classes/modules/uriModule.php index c4abe3214947617607f25ef78627827f24798cef..3186fa688f3d5cc7283ef2374b5083710dc63fba 100644 --- a/classes/modules/uriModule.php +++ b/classes/modules/uriModule.php @@ -100,7 +100,6 @@ class UriModule extends abstractModule{ chdir($conf['home'].$conf['model']['directory']); - Utils::queryFile($modelFile, $endpoints['local'], $results, $first); if($lodspk['resultRdf']){ echo Utils::serializeRdf($results, $extension); @@ -137,6 +136,9 @@ class UriModule extends abstractModule{ }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')){ diff --git a/common.inc.php b/common.inc.php index 6fd297de03aa1ea0ee119b12263320b9e37d87d1..a51c4f6944ced289bcea7b8c658b6f3134f461df 100644 --- a/common.inc.php +++ b/common.inc.php @@ -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; diff --git a/install.sh b/install.sh index 21df6785d19ea421580ce6948925330b7327e93c..65619b531916770ace037327479e9035d10e0e1e 100755 --- a/install.sh +++ b/install.sh @@ -23,19 +23,7 @@ fi back_one=`cd .. 2>/dev/null && pwd` parent=`basename $back_one` -mkdir -p meta -cd meta -if [ ! -e $metadb ]; 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 $metadb 'CREATE TABLE document (uri varcharg(1000), doc varchar(1000), format varchar(50));' -else - echo "WARNING: SQLite database already exists." -fi -cd .. +utils/create_db.sh $metadb while [ "$everything_ok" != "y" ]; do echo diff --git a/utils/create_db.sh b/utils/create_db.sh new file mode 100755 index 0000000000000000000000000000000000000000..285062c2c4a538399e2bde10b7a66bf33006b6df --- /dev/null +++ b/utils/create_db.sh @@ -0,0 +1,20 @@ +#!/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 ..