From 3082c4bf84b142d22fd6b069f5bd54cc1da585be Mon Sep 17 00:00:00 2001 From: alangrafu <alvaro@graves.cl> Date: Mon, 23 Jan 2012 00:24:55 -0800 Subject: [PATCH] Script to create /delete services and class modules --- index.php | 11 ++- utils/ls.sh | 50 +++++++++++ utils/modules/create-class.sh | 153 ++++++++++++++++++++++++++++++++ utils/modules/create-service.sh | 121 +++++++++++++++++++++++++ utils/modules/delete-class.sh | 65 ++++++++++++++ utils/modules/delete-service.sh | 65 ++++++++++++++ 6 files changed, 463 insertions(+), 2 deletions(-) create mode 100755 utils/ls.sh create mode 100755 utils/modules/create-class.sh create mode 100755 utils/modules/create-service.sh create mode 100755 utils/modules/delete-class.sh create mode 100755 utils/modules/delete-service.sh diff --git a/index.php b/index.php index 577d3a83..0417a31c 100755 --- a/index.php +++ b/index.php @@ -60,7 +60,11 @@ $localUri = $uri; if($uri == $conf['basedir']){ header('Location: '.$conf['root']); exit(0); -}elseif(preg_match("|^".$conf['basedir'].$conf['special']['uri']."|", $uri)){ +} + + +//Service module +if(preg_match("|^".$conf['basedir'].$conf['special']['uri']."|", $uri)){ include_once($conf['special']['class']); $context = array(); $context['contentType'] = $acceptContentType; @@ -69,6 +73,9 @@ if($uri == $conf['basedir']){ $sp->execute($uri, $context); exit(0); } +//End of Service module + +//Class module if($conf['mirror_external_uris']){ $uri = $conf['ns']['local'].$_GET['q']; $localUri = $conf['basedir'].$_GET['q']; @@ -135,6 +142,6 @@ if(is_array($results)){ $resultsObj = $results; } Utils::processDocument($viewFile, $base, $resultsObj); -//} +//end of Class module ?> diff --git a/utils/ls.sh b/utils/ls.sh new file mode 100755 index 00000000..05c2f572 --- /dev/null +++ b/utils/ls.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +formats=( html rdf ttl nt json all ) +operations=( create delete ) +modules=( class service uri ) + +currentOperation= +currentFormat= +currentModule= + +if [[ ${operations[@]} =~ $1 ]] +then + currentOperation=$1 +else + echo "Operation \"$1\" not valid" + exit 1 +fi + +if [[ ${modules[@]} =~ $2 ]] +then + currentModule=$2 +else + echo "Module \"$2\" not valid" + exit 1 +fi + +if [[ ${formats[@]} =~ $4 ]] +then + currentFormat=$4 +else + echo "Format \"$4\" not valid" + exit 1 +fi + + +currentUnit=$3 + + +if [[ $currentOperation == "create" ]] +then + $DIR/modules/create-$currentModule.sh "$currentUnit" "$currentFormat" +fi +if [[ $currentOperation == "delete" ]] +then + $DIR/modules/delete-$currentModule.sh "$currentUnit" "$currentFormat" +fi + + diff --git a/utils/modules/create-class.sh b/utils/modules/create-class.sh new file mode 100755 index 00000000..bf86e068 --- /dev/null +++ b/utils/modules/create-class.sh @@ -0,0 +1,153 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +initToken='class' + +modelHtml=$(cat <<QUERY +SELECT ?s2 ?p2 ?s1 ?p1 WHERE { + { + <{{uri}}> ?s1 ?p1 . + }UNION{ + ?s2 ?p2 <{{uri}}> . + } +} +QUERY +) + + +viewHtml=$(cat <<VIEW +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" + "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"> + <head> + <title>Page about {{base.this.value}}</title> + <link href="{{base.baseUrl}}/lodspeakr/css/basic.css" rel="stylesheet" type="text/css" media="screen" /> + <link rel="alternate" type="application/rdf+xml" title="RDF/XML Version" href="{{base.this.value}}.rdf" /> + <link rel="alternate" type="text/turtle" title="Turtle Version" href="{{base.this.value}}.ttl" /> + <link rel="alternate" type="text/plain" title="N-Triples Version" href="{{base.this.value}}.nt" /> + <link rel="alternate" type="application/json" title="RDFJSON Version" href="{{base.this.value}}.json" /> + </head> + <body about="{{base.this.value}}"> + <h1>Page about <a href='{{base.this.value}}'>{{base.this.curie}}</a></h1> + <div> + <h2>Information from {{base.this.curie}}</h2> + <table> + {% for row in r.main %} + + {% if row.s1%} + <tr> + <td><a href='{{row.s1.value}}'>{{row.s1.curie}}</a></td> + + {% if row.p1.uri == 1 %} + <td><a rel='{{row.s1.curie}}' href='{{row.p1.value}}'>{{row.p1.curie}}</a></td> + {% else %} + <td><span property='{{row.s1.curie}}'>{{row.p1.value}}</span></td> + {% endif %} + + </tr> + {% endif %} + {% endfor %} + </table> + + <br/><br/> + <h2>Information pointing to {{base.this.curie}}</h2> + <table> + {% for row in r.main %} + {% if row.s2%} + <tr> + <td><a href='{{row.s2.value}}'>{{row.s2.curie}}</a></td> + <td><a rev='[{{row.p2.curie}}]' href='{{row.s2.value}}'>{{row.p2.curie}}</a></td> + </tr> + {%endif %} + {% endfor %} + </table> + </div> + </body> +</html> +VIEW) + +modelRdf=$(cat <<QUERY +DESCRIBE ?resource WHERE { + [] a ?resource . +} +QUERY) + +viewRdf=$(cat <<VIEW +{{r|safe}} +VIEW) + +modelTtl=$modelRdf +viewTtl=$viewRdf +modelNt=$modelRdf +viewNt=$viewRdf +modelJson=$modelRdf +viewJson=$viewJson + +#Check models +mainModelDir=$DIR/../../models/$initToken.$1 + +if [ -e "$mainModelDir" ] +then + echo "WARNING: At least one model for $1 exists." >&2 +else + mkdir $mainModelDir +fi + +obj=( ) +if [ "$2" == "all" ] +then + obj=( html rdf ttl nt json ) +else + obj=( $2 ) +fi + +for i in ${obj[@]} +do + if [ -e $mainModelDir/$i.queries ] + then + echo ERROR: $initToken.$1/$i.queries exists in models. Operation aborted >&2 + exit 1 + fi +done + + +#Check views +mainViewDir=$DIR/../../views/$initToken.$1 + +if [ -e "$mainViewDir" ] +then + echo "WARNING: At least one view for $1 exists." >&2 +else + mkdir $mainViewDir +fi + + +for i in ${obj[@]} +do + if [ -e $mainViewDir/$i.template ] + then + echo ERROR: $initToken.$1/$i already exist in views. Operation aborted >&2 + exit 1 + fi +done + + +#Create file structure + +for i in ${obj[@]} +do + mkdir $mainModelDir/$i.queries + if [ "$i" == "html" ] + then + echo "$modelHtml" > $mainModelDir/$i.queries/main.query + echo "$viewHtml" > $mainViewDir/$i.template + else + echo "$modelRdf" > $mainModelDir/$i.queries/main.query + echo "$viewRdf" > $mainViewDir/$i.template + fi +done + +echo $initToken.$1 created/modified successfully! >&2 diff --git a/utils/modules/create-service.sh b/utils/modules/create-service.sh new file mode 100755 index 00000000..48c9f3ae --- /dev/null +++ b/utils/modules/create-service.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +initToken='service' + +modelHtml=$(cat <<QUERY +{%for h in base.header %} +PREFIX {{h.prefix}}: <{{h.ns}}> +{%endfor%} +SELECT DISTINCT ?resource WHERE { + {%if base.args.arg0 %}GRAPH <{{base.args.arg0}}>{ {%endif%} + [] a ?resource . + {%if base.args.arg0 %} } {%endif%} +} +QUERY) + +viewHtml=$(cat <<VIEW +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" + "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"> + <head> + <title>Classes available</title> + <link href="{{base.baseUrl}}/lodspeakr/css/basic.css" rel="stylesheet" type="text/css" media="screen" /> + </head> + <body> + <h1>Classes available</h1> +{%include "header.inc"%} + <ul> + {% for row in r %} + <li><a href="{{base.baseUrl}}special/instances/{{ row.resource.curie }}">{{row.resource.curie}}</a></li> + {% endfor %} + </ul> + </body> +</html> +VIEW) + +modelRdf=$(cat <<QUERY +DESCRIBE ?resource WHERE { + [] a ?resource . +} +QUERY) + +viewRdf=$(cat <<QUERY +{{r|safe}} +QUERY) + +modelTtl=$modelRdf +viewTtl=$viewRdf +modelNt=$modelRdf +viewNt=$viewRdf +modelJson=$modelRdf +viewJson=$viewJson + +#Check models +mainModelDir=$DIR/../../models/$initToken.$1 + +if [ -e "$mainModelDir" ] +then + echo "WARNING: At least one model for $1 exists." >&2 +else + mkdir $mainModelDir +fi + +obj=( ) +if [ "$2" == "all" ] +then + obj=( html rdf ttl nt json ) +else + obj=( $2 ) +fi + +for i in ${obj[@]} +do + if [ -e $mainModelDir/$i.queries ] + then + echo ERROR: $initToken.$1/$i.queries exists in models. Operation aborted >&2 + exit 1 + fi +done + + +#Check views +mainViewDir=$DIR/../../views/$initToken.$1 + +if [ -e "$mainViewDir" ] +then + echo "WARNING: At least one view for $1 exists." >&2 +else + mkdir $mainViewDir +fi + + +for i in ${obj[@]} +do + if [ -e $mainViewDir/$i.template ] + then + echo ERROR: $initToken.$1/$i already exist in views. Operation aborted >&2 + exit 1 + fi +done + + +#Create file structure + +for i in ${obj[@]} +do + mkdir $mainModelDir/$i.queries + if [ "$i" == "html" ] + then + echo "$modelHtml" > $mainModelDir/$i.queries/main.query + echo "$viewHtml" > $mainViewDir/$i.template + else + echo "$modelRdf" > $mainModelDir/$i.queries/main.query + echo "$viewRdf" > $mainViewDir/$i.template + fi +done + +echo $initToken.$1 created/modified successfully! >&2 diff --git a/utils/modules/delete-class.sh b/utils/modules/delete-class.sh new file mode 100755 index 00000000..87a8441e --- /dev/null +++ b/utils/modules/delete-class.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +initToken='class' + + +#Check models +mainModelDir=$DIR/../../models/$initToken.$1 + +if [ ! -e "$mainModelDir" ] +then + echo "ERROR: $initToken.$1 doesn't exist in models. Operation aborted" >&2 + exit 1 +fi + +obj=( ) +if [ "$2" == "all" ] +then + obj=( html rdf ttl nt json ) +else + obj=( $2 ) +fi + +for i in ${obj[@]} +do + if [ ! -e $mainModelDir/$i.queries ] + then + echo "WARNING: $initToken.$1/$i.query does not exists in models." >&2 + fi +done + + +#Check views +mainViewDir=$DIR/../../views/$initToken.$1 + +if [ ! -e "$mainViewDir" ] +then + echo "ERROR: $initToken.$1 doesn't exist in views. Operation aborted." >&2 +fi + + +for i in ${obj[@]} +do + if [ ! -e $mainViewDir/$i.template ] + then + echo "WARNING: $mainViewDir/$i.template doesn't exist in views." >&2 + fi +done + + +#Delete file structure + +if [ "$2" == "all" ] +then + rm -rf $mainModelDir + rm -rf $mainViewDir +else + for i in ${obj[@]} + do + rm -rf $mainModelDir/$i.queries + rm -rf $mainViewDir/$i.template + done +fi +echo $initToken.$1 deleted successfully! >&2 diff --git a/utils/modules/delete-service.sh b/utils/modules/delete-service.sh new file mode 100755 index 00000000..780ebab2 --- /dev/null +++ b/utils/modules/delete-service.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +initToken='service' + + +#Check models +mainModelDir=$DIR/../../models/$initToken.$1 + +if [ ! -e "$mainModelDir" ] +then + echo "ERROR: $initToken.$1 doesn't exist in models. Operation aborted" >&2 + exit 1 +fi + +obj=( ) +if [ "$2" == "all" ] +then + obj=( html rdf ttl nt json ) +else + obj=( $2 ) +fi + +for i in ${obj[@]} +do + if [ ! -e $mainModelDir/$i.queries ] + then + echo "WARNING: $initToken.$1/$i.query does not exists in models." >&2 + fi +done + + +#Check views +mainViewDir=$DIR/../../views/$initToken.$1 + +if [ ! -e "$mainViewDir" ] +then + echo "ERROR: $initToken.$1 doesn't exist in views. Operation aborted." >&2 +fi + + +for i in ${obj[@]} +do + if [ ! -e $mainViewDir/$i.template ] + then + echo "WARNING: $mainViewDir/$i.template doesn't exist in views." >&2 + fi +done + + +#Delete file structure + +if [ "$2" == "all" ] +then + rm -rf $mainModelDir + rm -rf $mainViewDir +else + for i in ${obj[@]} + do + rm -rf $mainModelDir/$i.queries + rm -rf $mainViewDir/$i.template + done +fi +echo $initToken.$1 deleted successfully! >&2 -- GitLab