diff --git a/classes/Utils.php b/classes/Utils.php index ff69178ee3fb9bef354e0dd4d9c30878c0e1c3ac..39405b2f16b293d1e8566997efc4c8643156b4f3 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 98abbd0f36b9083e79fc53ffe9803cf0ed0edaeb..c3ab090811edac8bea34595c55cdfd61f3f60c64 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 db84524969f1dc3de93913f479e05104e39c06f8..37f0ace4586dc48ed224803ac6d48048b67bdef9 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 cda1f64b905aa73d71c5205c16e2f0e31fa8e990..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..3315238248559082bbe1eea10a9daad975d66be7 --- /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 0000000000000000000000000000000000000000..892d00290c1dde3a8b3e2261c91470864e54c636 --- /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 65790b24227ce70dc56285916206c45fb2f36107..531e9e7984eb97e250638b22b270765115cfc0f7 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>