Skip to content
Snippets Groups Projects
create-uri.sh 3.51 KiB
#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

initToken='uri'

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