From 3496f7535e1910b96e6bfa6152caf909de93e80d Mon Sep 17 00:00:00 2001 From: alangrafu <alvaro@graves.cl> Date: Sun, 11 Sep 2011 21:05:21 -0700 Subject: [PATCH] Adding multiple queries when generating a page Instead of creating a file for the model, create a dir (e.g., foaf:Person.view.html). Inside add different files (the name doesn't matter). In the view file, they will be accessed as r.filename and can be operated as usual --- classes/Utils.php | 41 +++++++++++++++++------ index.php | 23 ++++++++++--- install.sh | 4 +++ models/rdfs:Class.model.html | 5 --- models/rdfs:Class.model.html/instances | 3 ++ models/rdfs:Class.model.html/superclasses | 5 +++ views/rdfs:Class.view.html | 13 ++++++- 7 files changed, 73 insertions(+), 21 deletions(-) delete mode 100644 models/rdfs:Class.model.html create mode 100644 models/rdfs:Class.model.html/instances create mode 100644 models/rdfs:Class.model.html/superclasses diff --git a/classes/Utils.php b/classes/Utils.php index ff69178e..39405b2f 100644 --- a/classes/Utils.php +++ b/classes/Utils.php @@ -52,7 +52,7 @@ class Utils{ return $ns[$parts[0]].$parts[1]; } - public static function getPrefix($curie){ + public static function getPrefix($curie){ global $conf; $ns = $conf['ns']; $parts = explode(':', $curie); @@ -102,8 +102,16 @@ class Utils{ 'template_dir' => './', 'cache_dir' => 'cache/', )); - $r = Utils::sparqlResult2Obj($data); - $vars = compact('base', 'r'); + + $r = array(); + if(!isset($data['results'])){ + foreach($data as $k => $v){ + $r[$k] = Utils::sparqlResult2Obj($v); + } + }else{ + $r = Utils::sparqlResult2Obj($data); + } + $vars = compact('base', 'r'); if(is_file($view)){ Haanga::Load($view, $vars); }else{ @@ -148,13 +156,9 @@ class Utils{ } - public static function processDocument($uri, $contentType, $data, $viewFile){ - global $conf; - $extension = Utils::getExtension($contentType); - - header('Content-Type: '.$contentType); - if(preg_match("/describe/i", $data['query'])){ - + private static function serializeByQueryType($data){ + global $conf; + if(preg_match("/describe/i", $data['query'])){ require('lib/arc2/ARC2.php'); $parser = ARC2::getRDFParser(); $parser->parse($conf['basedir'], $data['results']); @@ -181,6 +185,21 @@ class Utils{ Utils::send404($uri); } } + return $results; + } + + public static function processDocument($uri, $contentType, $data, $viewFile){ + global $conf; + $extension = Utils::getExtension($contentType); + + header('Content-Type: '.$contentType); + if(!isset($data['results'])){ + foreach($data as $k => $v){ + $results[$k] = Utils::serializeByQueryType($v); + } + }else{ + $results = Utils::serializeByQueryType($data); + } Utils::showView($uri, $results, $viewFile); exit(0); @@ -195,7 +214,7 @@ class Utils{ }elseif(preg_match("/construct/i", $query)){ return $conf['endpoint']['describe']['output']; }else{ - Utils::send500($uri); + Utils::send500(null); } } diff --git a/index.php b/index.php index 98abbd0f..c3ab0908 100755 --- a/index.php +++ b/index.php @@ -74,11 +74,26 @@ if(!file_exists($modelFile) || !file_exists($viewFile) || $curieType == null){ $modelFile = $conf['model']['directory'].$conf['model']['default'].$conf['model']['extension'].".".$extension; $viewFile = $conf['view']['directory'].$conf['view']['default'].$conf['view']['extension'].".".$extension; } -$query = file_get_contents($modelFile); -$query = preg_replace("|".$conf['resource']['url_delimiter']."|", "<".$uri.">", $query); -$data['results'] = $endpoint->query($query, Utils::getResultsType($query)); -$data['query'] = $query; +if(!is_dir($modelFile)){ + $query = file_get_contents($modelFile); + $query = preg_replace("|".$conf['resource']['url_delimiter']."|", "<".$uri.">", $query); + $data['results'] = $endpoint->query($query, Utils::getResultsType($query)); + $data['query'] = $query; +}else{ + $modelDir = $modelFile; + $handle = opendir($modelDir); + while (false !== ($modelFile = readdir($handle))) { + if($modelFile != "." && $modelFile != ".."){ + $query = file_get_contents($modelDir."/".$modelFile); + $query = preg_replace("|".$conf['resource']['url_delimiter']."|", "<".$uri.">", $query); + $data[$modelFile]['results'] = $endpoint->query($query, Utils::getResultsType($query)); + $data[$modelFile]['query'] = $query; + } + } + closedir($handle); +} + Utils::processDocument($uri, $acceptContentType, $data, $viewFile); //} diff --git a/install.sh b/install.sh index db845249..37f0ace4 100755 --- a/install.sh +++ b/install.sh @@ -92,9 +92,13 @@ cp $root_htaccess $parent_htaccess cd views ln -s default.view.rdf default.view.nt ln -s default.view.rdf default.view.ttl +ln -s owl:Class.view.html rdfs:Class.view.html + cd ../models ln -s default.model.rdf default.model.nt ln -s default.model.rdf default.model.ttl +ln -s owl:Class.model.html rdfs:Class.view.html + cd .. mkdir cache diff --git a/models/rdfs:Class.model.html b/models/rdfs:Class.model.html deleted file mode 100644 index cda1f64b..00000000 --- a/models/rdfs:Class.model.html +++ /dev/null @@ -1,5 +0,0 @@ -SELECT DISTINCT ?instances WHERE { - ?instances a %u . -} - - diff --git a/models/rdfs:Class.model.html/instances b/models/rdfs:Class.model.html/instances new file mode 100644 index 00000000..33152382 --- /dev/null +++ b/models/rdfs:Class.model.html/instances @@ -0,0 +1,3 @@ +SELECT ?instances WHERE{ + ?instances a %u . +} diff --git a/models/rdfs:Class.model.html/superclasses b/models/rdfs:Class.model.html/superclasses new file mode 100644 index 00000000..892d0029 --- /dev/null +++ b/models/rdfs:Class.model.html/superclasses @@ -0,0 +1,5 @@ +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + +SELECT DISTINCT ?class WHERE{ + %u a ?class . +} diff --git a/views/rdfs:Class.view.html b/views/rdfs:Class.view.html index 65790b24..531e9e79 100644 --- a/views/rdfs:Class.view.html +++ b/views/rdfs:Class.view.html @@ -3,6 +3,7 @@ "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" {% for i, ns in base.ns %}xmlns:{{i}}="{{ns}}" {%endfor%}version="XHTML+RDFa 1.0" xml:lang="en"> + <link href="{{base.baseUrl}}/lodspeakr/css/basic.css" rel="stylesheet" type="text/css" media="screen" /> <head> <title>Page about {{base.this.value}}</title> </head> @@ -11,13 +12,23 @@ <div> <h2>Instances of {{base.this.curie}}</h2> <ul> - {% for row in r %} + {% for row in r.instances %} {% if row.value.instances != null %} <li><a href='{{ row.value.instances }}'>{{row.curie.instances}}</a></li> {% endif %} {% endfor %} </ul> </div> + <div> + <h2>Superclass of {{base.this.curie}}</h2> + <ul> + {% for row in r.superclasses %} + {% if row.value.class != null %} + <li><a href='{{ row.value.class }}'>{{row.curie.class}}</a></li> + {% endif %} + {% endfor %} + </ul> + </div> </body> </html> -- GitLab