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