It's really what the name says: you can make an HTTP interface for the URIs of an ontology.
There are two main scripts in this repo:
server
: a Node.js server that dynamically content-negotiates your turtle file inapplication/json
,text/turtle
, andtext/html
serve
: a generation script that uses your turtle file to generate the files inapplication/json
,text/turtle
,application/rdf+xml
andtext/html
, and accompanying.htaccess
to support content negotiation.
The latter needs an additional Apache web server to actually serve your files.
Be sure to have nodejs installed. If you install nodejs from package manager consider https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
cd owlturtle2http/
npm install
./server
After this, the server will be running on port 8080. You can change this in the file server
./serve -h
usage: serve [-h] [-v] [-o ONTOLOGY] [-a] [-i]
Serving your turtle ontologies
Optional arguments:
-h, --help Show this help message and exit.
-v, --version Show program's version number and exit.
-o ONTOLOGY, --ontology ONTOLOGY
label of the turtle file you want to serve, as
specified in the config file. If provided, the
version can also be added (e.g., "apps4X:0.4", if so,
the turtle file will also be published under apps4X/0.
4/. The name of the turtle CANNOT be `assets` (as all
site assets reside in the `assets`-folder)
-a, --all (re-)serve all turtle files in the config file
-i, --index (re-)render the index.html file. Don't do this if you
have your own index.html file! PS: this actually
tries to be smart, and links to all subfolders that
have a .htaccess file in them, so is not necessarily
depending on config.files
config.example.json
shows an exemplary configuration. The actual config file should be config.json
.
It has three parts:
outpath
: the file path (relative or absolute) to where to generate you static files to. This could be, e.g., the root of your web server, or a subfolder thereof (also virtual hosts are possible, see below). For basic (UNIX) configurations, this is usually/var/www/html
.namespacebase
: the url path (relative) to where your namespaces will reside forserve
(forserver
, this is by default/ns
, but can be changed in the file). E.g., if you publish all your ontologies onhttp://example.com/ns
,namespacebase
should be/ns
.files
: a dictionary of your ontologies: their labels and the (relative or absolute) path to their turtle file. These labels need to be used for the-o
input parameter for./serve
. Bothserve
andserver
will use these labels as the shortname of the ontologies you want to publish, e.g., the ontology with shortnameapps4X
will be generated under{outpath}/{namespacebase}/apps4X
inserve
, or served under/ns/apps4X
in./server
.
see for example: http://semweb.mmlab.be/ns/apps4X
Or ./server
on your own install: http://localhost:8080/ns/apps4X/
a2enmod proxy_http
a2enmod proxy
# Insert These 2 lines in your sites_available/000-default
#> ProxyRequests On
#> ProxyPassReverse / http://localhost:8080/
# Restart your apache
sudo service apache restart
Add this .htaccess in the right directory:
Options +FollowSymLinks -Indexes -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine on
# Simple URL redirect:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) http://localhost:8080/ns/$1 [P]
</IfModule>
You can set config.outpath
to (a subfolder of) the root path of your web server and be done with it.
But, e.g., if you want your namespace to reside on a subdomain (e.g., http://ns.example.com
),
you can use following VirtualHost Configuration:
<VirtualHost *:80>
DocumentRoot "[absolute outpath]"
ServerName ns.localhost
ErrorLog "logs/webgrind-error.log"
CustomLog "logs/webgrind-access.log" common
<Directory "[absolute outpath]">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
LogLevel warn
</VirtualHost>
MIT