rdf refactor
rdf refactor

<VirtualHost 127.0.0.1:8080> <VirtualHost 127.0.0.1:8080>
ServerAdmin webmaster@localhost ServerAdmin webmaster@localhost
   
ServerName data.gov.au ServerName data.gov.au
ServerAlias www.data.gov.au, opendata.linkdigital.com.au ServerAlias www.data.gov.au, opendata.linkdigital.com.au
   
   
#allow access to local static content eg. logos #allow access to local static content eg. logos
Alias /index.html /var/www/index.html Alias /index.html /var/www/index.html
Alias /logos /var/www/logos Alias /logos /var/www/logos
Alias /tools /var/www/tools.shtml Alias /tools /var/www/tools.shtml
Alias /opendata /var/www/opendata.shtml Alias /opendata /var/www/opendata.shtml
Alias /opengov /var/www/opengov.shtml Alias /opengov /var/www/opengov.shtml
   
DocumentRoot /var/www DocumentRoot /var/www
<IfModule mod_expires.c> <IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$"> <FilesMatch "\.(jpe?g|png|gif|js|css)$">
ExpiresActive On ExpiresActive On
ExpiresDefault "access plus 1 week" ExpiresDefault "access plus 1 week"
</FilesMatch> </FilesMatch>
</IfModule> </IfModule>
  AddType application/octet-stream .woff
  <FilesMatch "\.(eot|otf|woff|ttf)$">
  SetEnvIf Origin "^http(s)?://(.+\.)?(data.gov.au)$" origin_is=$0
  Header set Access-Control-Allow-Origin %{origin_is}e env=origin_is
  </FilesMatch>
   
<Directory /> <Directory />
Options FollowSymLinks Options FollowSymLinks
AllowOverride None AllowOverride None
</Directory> </Directory>
   
<Directory /var/www/> <Directory /var/www/>
Options -Indexes -FollowSymLinks -MultiViews +Includes Options -Indexes -FollowSymLinks -MultiViews +Includes
AllowOverride None AllowOverride None
   
Order allow,deny Order allow,deny
allow from all allow from all
   
AddType text/html .shtml AddType text/html .shtml
AddOutputFilter INCLUDES .shtml AddOutputFilter INCLUDES .shtml
</Directory> </Directory>
   
ErrorLog ${APACHE_LOG_DIR}/error.log ErrorLog ${APACHE_LOG_DIR}/error.log
   
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg. # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn LogLevel warn
   
CustomLog ${APACHE_LOG_DIR}/access.log varnishcombined CustomLog ${APACHE_LOG_DIR}/access.log varnishcombined
RewriteEngine On RewriteEngine On
   
RewriteMap lc int:tolower RewriteMap lc int:tolower
   
# RewriteRule ^/apps/antenna-mate/?$ http://antennamate.com/ [PT] # RewriteRule ^/apps/antenna-mate/?$ http://antennamate.com/ [PT]
# RewriteRule ^/apps/postcode-finder/?$ http://www.aus-emaps.com/postcode_finder.php [PT] # RewriteRule ^/apps/postcode-finder/?$ http://www.aus-emaps.com/postcode_finder.php [PT]
# RewriteRule ^/apps/the-australian-cost-of-living-heatmap/?$ http://www.creditcardcompare.com.au/tools/cost-of-living-heatmap/ [PT] # RewriteRule ^/apps/the-australian-cost-of-living-heatmap/?$ http://www.creditcardcompare.com.au/tools/cost-of-living-heatmap/ [PT]
RewriteRule ^/catalogues/?$ /organization [PT] RewriteRule ^/catalogues/?$ /organization [PT]
RewriteRule ^/dataset/“cycling-in-new-south-wales-what-the-data-tells-us”-and-related-data/? /dataset/2809cycling-in-new-south-wales-what-the-data-tells-us2809-and-related-data [PT] RewriteRule ^/dataset/“cycling-in-new-south-wales-what-the-data-tells-us”-and-related-data/? /dataset/2809cycling-in-new-south-wales-what-the-data-tells-us2809-and-related-data [PT]
RewriteRule ^/dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-actives/? /dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-acti [PT] RewriteRule ^/dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-actives/? /dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-acti [PT]
RewriteRule ^/dataset_category/business/?$ /group/business [PT] RewriteRule ^/dataset_category/business/?$ /group/business [PT]
RewriteRule ^/dataset_category/community/?$ /group/community [PT] RewriteRule ^/dataset_category/community/?$ /group/community [PT]
RewriteRule ^/dataset_category/geography/?$ /group/geography [PT] RewriteRule ^/dataset_category/geography/?$ /group/geography [PT]
RewriteRule ^/dataset_category/government/?$ /group/government [PT] RewriteRule ^/dataset_category/government/?$ /group/government [PT]
RewriteRule ^/dataset_category/health/?$ /group/health [PT] RewriteRule ^/dataset_category/health/?$ /group/health [PT]
RewriteRule ^/dataset_category/?$ /group [PT] RewriteRule ^/dataset_category/?$ /group [PT]
RewriteRule ^/feed/?$ /feeds/dataset.atom [PT] RewriteRule ^/feed/?$ /feeds/dataset.atom [PT]
RewriteRule ^/jurisdiction/australian-capital-territory/?$ /dataset?q=act [PT] RewriteRule ^/jurisdiction/australian-capital-territory/?$ /dataset?q=act [PT]
RewriteRule ^/jurisdiction/new-south-wales/?$ /dataset?q=new+south+wales [PT] RewriteRule ^/jurisdiction/new-south-wales/?$ /dataset?q=new+south+wales [PT]
RewriteRule ^/jurisdiction/queensland/?$ /dataset?q=queensland [PT] RewriteRule ^/jurisdiction/queensland/?$ /dataset?q=queensland [PT]
RewriteRule ^/jurisdiction/south-australia/?$ /dataset?q=south+australia [PT] RewriteRule ^/jurisdiction/south-australia/?$ /dataset?q=south+australia [PT]
RewriteRule ^/jurisdiction/victoria/?$ /dataset?q=victoria [PT] RewriteRule ^/jurisdiction/victoria/?$ /dataset?q=victoria [PT]
RewriteRule ^/jurisdiction/western-australia/?$ /dataset?q=western+australia [PT] RewriteRule ^/jurisdiction/western-australia/?$ /dataset?q=western+australia [PT]
RewriteRule ^/jurisdiction/?$ /dataset [PT] RewriteRule ^/jurisdiction/?$ /dataset [PT]
   
# RewriteCond %{QUERY_STRING} ^category=([a-z]+) # RewriteCond %{QUERY_STRING} ^category=([a-z]+)
# RewriteRule ^/data/?$ /group/${lc:%1}? [PT] # RewriteRule ^/data/?$ /group/${lc:%1}? [PT]
   
# RewriteCond %{QUERY_STRING} ^format=Shapefile # RewriteCond %{QUERY_STRING} ^format=Shapefile
# RewriteRule ^/data/?$ /dataset?res_format=shp [PT] # RewriteRule ^/data/?$ /dataset?res_format=shp [PT]
   
RewriteRule ^/data/?$ /dataset? [PT] RewriteRule ^/data/?$ /dataset? [PT]
   
RewriteCond %{QUERY_STRING} ^s=(.*) RewriteCond %{QUERY_STRING} ^s=(.*)
RewriteRule ^/ /dataset?q=%1 [PT] RewriteRule ^/ /dataset?q=%1 [PT]
   
   
FilterDeclare OPENDATA FilterDeclare OPENDATA
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $text/ FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $text/
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/javascript FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/javascript
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/json FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/json
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/xml FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/xml
FilterChain OPENDATA FilterChain OPENDATA
Substitute "s#//opendata.linkdigital.com.au#//data.gov.au#" Substitute "s#//opendata.linkdigital.com.au#//data.gov.au#"
   
WSGIScriptAlias / /var/lib/ckan/dga/pyenv/bin/dga.py WSGIScriptAlias / /var/lib/ckan/dga/pyenv/bin/dga.py
WSGIPassAuthorization On WSGIPassAuthorization On
   
ErrorLog /var/log/apache2/ckandga.error.log ErrorLog /var/log/apache2/ckandga.error.log
CustomLog /var/log/apache2/ckandga.custom.log combined CustomLog /var/log/apache2/ckandga.custom.log combined
</VirtualHost> </VirtualHost>
   
# This is a basic VCL configuration file for varnish. See the vcl(7) # This is a basic VCL configuration file for varnish. See the vcl(7)
# man page for details on VCL syntax and semantics. # man page for details on VCL syntax and semantics.
# #
# Default backend definition. Set this to point to your content # Default backend definition. Set this to point to your content
# server. # server.
# #
backend default { backend default {
.host = "127.0.0.1"; .host = "127.0.0.1";
.port = "8080"; .port = "8080";
} }
   
sub vcl_fetch { sub vcl_fetch {
set beresp.grace = 1h; set beresp.grace = 1h;
if (beresp.http.content-type ~ "(text|application)") { if (beresp.http.content-type ~ "(text|application)") {
set beresp.do_gzip = true; set beresp.do_gzip = true;
} }
if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") { if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") {
unset beresp.http.set-cookie; unset beresp.http.set-cookie;
} }
} }
sub vcl_recv { sub vcl_recv {
if (req.url ~ "^/_tracking") { if (req.url ~ "^/_tracking") {
return (pass); return (pass);
} }
if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") { if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") {
return(lookup); return(lookup);
} }
  if (req.url ~ "/(..|.._..)/") {
  set req.url = regsub(req.url, "/((?!js)..|.._..)/", "/");
  }
if (req.http.Cookie) { if (req.http.Cookie) {
set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm.=[^;]+;? *", "\1"); # removes all cookies named __utm? (utma, utmb...) - tracking thing set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm.=[^;]+;? *", "\1"); # removes all cookies named __utm? (utma, utmb...) - tracking thing
   
if (req.http.Cookie == "") { if (req.http.Cookie == "") {
remove req.http.Cookie; remove req.http.Cookie;
} }
} }
} }
  sub vcl_hash {
  # http://serverfault.com/questions/112531/ignoring-get-parameters-in-varnish-vcl
  set req.url = regsub(req.url, "(?:(.com|.au))/((?!js)..|.._..)/", "/");
  hash_data(req.url);
  if (req.http.host) {
  hash_data(req.http.host);
  } else {
  hash_data(server.ip);
  }
  return (hash);
  }
sub vcl_deliver { sub vcl_deliver {
if (!resp.http.Vary) { if (!resp.http.Vary) {
set resp.http.Vary = "Accept-Encoding"; set resp.http.Vary = "Accept-Encoding";
} else if (resp.http.Vary !~ "(?i)Accept-Encoding") { } else if (resp.http.Vary !~ "(?i)Accept-Encoding") {
set resp.http.Vary = resp.http.Vary + ",Accept-Encoding"; set resp.http.Vary = resp.http.Vary + ",Accept-Encoding";
} }
if (obj.hits > 0) { if (obj.hits > 0) {
set resp.http.X-Cache = "HIT"; set resp.http.X-Cache = "HIT";
} else { } else {
set resp.http.X-Cache = "MISS"; set resp.http.X-Cache = "MISS";
} }
} }
   
# #
# Below is a commented-out copy of the default VCL logic. If you # Below is a commented-out copy of the default VCL logic. If you
# redefine any of these subroutines, the built-in logic will be # redefine any of these subroutines, the built-in logic will be
# appended to your code. # appended to your code.
# sub vcl_recv { # sub vcl_recv {
# if (req.restarts == 0) { # if (req.restarts == 0) {
# if (req.http.x-forwarded-for) { # if (req.http.x-forwarded-for) {
# set req.http.X-Forwarded-For = # set req.http.X-Forwarded-For =
# req.http.X-Forwarded-For + ", " + client.ip; # req.http.X-Forwarded-For + ", " + client.ip;
# } else { # } else {
# set req.http.X-Forwarded-For = client.ip; # set req.http.X-Forwarded-For = client.ip;
# } # }
# } # }
# if (req.request != "GET" && # if (req.request != "GET" &&
# req.request != "HEAD" && # req.request != "HEAD" &&
# req.request != "PUT" && # req.request != "PUT" &&
# req.request != "POST" && # req.request != "POST" &&
# req.request != "TRACE" && # req.request != "TRACE" &&
# req.request != "OPTIONS" && # req.request != "OPTIONS" &&
# req.request != "DELETE") { # req.request != "DELETE") {
# /* Non-RFC2616 or CONNECT which is weird. */ # /* Non-RFC2616 or CONNECT which is weird. */
# return (pipe); # return (pipe);
# } # }
# if (req.request != "GET" && req.request != "HEAD") { # if (req.request != "GET" && req.request != "HEAD") {
# /* We only deal with GET and HEAD by default */ # /* We only deal with GET and HEAD by default */
# return (pass); # return (pass);
# } # }
# if (req.http.Authorization || req.http.Cookie) { # if (req.http.Authorization || req.http.Cookie) {
# /* Not cacheable by default */ # /* Not cacheable by default */
# return (pass); # return (pass);
# } # }
# return (lookup); # return (lookup);
# } # }
# #
# sub vcl_pipe { # sub vcl_pipe {
# # Note that only the first request to the backend will have # # Note that only the first request to the backend will have
# # X-Forwarded-For set. If you use X-Forwarded-For and want to # # X-Forwarded-For set. If you use X-Forwarded-For and want to
# # have it set for all requests, make sure to have: # # have it set for all requests, make sure to have:
# # set bereq.http.connection = "close"; # # set bereq.http.connection = "close";
# # here. It is not set by default as it might break some broken web # # here. It is not set by default as it might break some broken web
# # applications, like IIS with NTLM authentication. # # applications, like IIS with NTLM authentication.
# return (pipe); # return (pipe);
# } # }
# #
# sub vcl_pass { # sub vcl_pass {
# return (pass); # return (pass);
# } # }
# #
# sub vcl_hash { # sub vcl_hash {
# hash_data(req.url); # hash_data(req.url);
# if (req.http.host) { # if (req.http.host) {
# hash_data(req.http.host); # hash_data(req.http.host);
# } else { # } else {
# hash_data(server.ip); # hash_data(server.ip);
# } # }
# return (hash); # return (hash);
# } # }
# #
# sub vcl_hit { # sub vcl_hit {
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_miss { # sub vcl_miss {
# return (fetch); # return (fetch);
# } # }
# #
# sub vcl_fetch { # sub vcl_fetch {
# if (beresp.ttl <= 0s || # if (beresp.ttl <= 0s ||
# beresp.http.Set-Cookie || # beresp.http.Set-Cookie ||
# beresp.http.Vary == "*") { # beresp.http.Vary == "*") {
# /* # /*
# * Mark as "Hit-For-Pass" for the next 2 minutes # * Mark as "Hit-For-Pass" for the next 2 minutes
# */ # */
# set beresp.ttl = 120 s; # set beresp.ttl = 120 s;
# return (hit_for_pass); # return (hit_for_pass);
# } # }
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_deliver { # sub vcl_deliver {
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_error { # sub vcl_error {
# set obj.http.Content-Type = "text/html; charset=utf-8"; # set obj.http.Content-Type = "text/html; charset=utf-8";
# set obj.http.Retry-After = "5"; # set obj.http.Retry-After = "5";
# synthetic {" # synthetic {"
# <?xml version="1.0" encoding="utf-8"?> # <?xml version="1.0" encoding="utf-8"?>
# <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
# "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> # "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
# <html> # <html>
# <head> # <head>
# <title>"} + obj.status + " " + obj.response + {"</title> # <title>"} + obj.status + " " + obj.response + {"</title>
# </head> # </head>
# <body> # <body>
# <h1>Error "} + obj.status + " " + obj.response + {"</h1> # <h1>Error "} + obj.status + " " + obj.response + {"</h1>
# <p>"} + obj.response + {"</p> # <p>"} + obj.response + {"</p>
# <h3>Guru Meditation:</h3> # <h3>Guru Meditation:</h3>
# <p>XID: "} + req.xid + {"</p> # <p>XID: "} + req.xid + {"</p>
# <hr> # <hr>
# <p>Varnish cache server</p> # <p>Varnish cache server</p>
# </body> # </body>
# </html> # </html>
# "}; # "};
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_init { # sub vcl_init {
# return (ok); # return (ok);
# } # }
# #
# sub vcl_fini { # sub vcl_fini {
# return (ok); # return (ok);
# } # }
   
  #
  # ckan - Pylons configuration
  #
  # The %(here)s variable will be replaced with the parent directory of this file
  #
  [DEFAULT]
 
  # Change debug to true when doing CKAN development, it enables Pylons'
  # interactive debugging tool, makes Fanstatic serve unminified JS and CSS
  # files, and enables CKAN templates' debugging features.
  #
  # WARNING: *THIS SETTING MUST BE SET TO FALSE ON A PRODUCTION ENVIRONMENT*
  # Debug mode will enable the interactive debugging tool, allowing ANYONE to
  # execute malicious code after an exception is raised.
  debug = False
 
  email_to = ddg@alert.links.com.au
  error_email_from = data.gov@finance.gov.au
 
  # The SMTP server to connect to when sending emails to users, with optional
  # port (default: 25). For example: lavabit.com, or smtp.gmail.com:587. To
  # connect to a local sendmail process enter 'localhost'.
  #smtp.server = localhost
  smtp.server = smtp.gmail.com:587
 
  # Whether or not to use STARTTLS when connecting to the SMTP server.
  #smtp.starttls = False
  smtp.starttls = True
 
  # The username and password to use to authenticate with the SMTP server.
  # Optional, if these are left commented-out then CKAN will try to send email
  # to the SMTP server without logging in first.
  #smtp.user = your_username@gmail.com
  #smtp.password = your_password
  smtp.user = datagovau@gmail.com
  smtp.password = ***
  googleanalytics.id = ***
  # The email address that emails sent by CKAN to users should appear to come
  # from. Optional (default: None, note that the SMTP server may insert its own
  # from address).
  smtp.mail_from = data.gov@finance.gov.au
 
  [server:main]
  use = egg:Paste#http
  host = 0.0.0.0
  port = 5000
 
  [app:main]
  use = egg:ckan
  ckan.tracking_enabled = true
  full_stack = true
  cache_dir = %(here)s/data
  beaker.session.key = ckan
  beaker.session.secret = ***
  app_instance_uuid = ***
  # Auth
 
  ckan.auth.anon_create_dataset = false
  ckan.auth.create_unowned_dataset = false
  ckan.auth.create_dataset_if_not_in_organization = false
  ckan.auth.user_create_organizations = false
  ckan.auth.user_delete_organizations = true
  ckan.auth.user_create_groups = false
  ckan.auth.user_delete_groups = true
  ckan.auth.create_user_via_api = true
 
  # List the names of CKAN extensions to activate.
  # Note: This line is required to be here for packaging, even if it is empty.
  # Note: Add ``pdf_preview`` to enable the resource preview for PDFs
  # Add the ``resource_proxy`` plugin to enable resorce proxying and get around the same origin policy
  # Add ``datastore`` to enable the CKAN DataStore extension
  ckan.plugins = qa disqus stats json_preview recline_preview datastore datastorer googleanalytics resource_proxy wms_preview kml_preview geojson_preview datagovau
 
  disqus.name = datagovau
 
  # If you'd like to fine-tune the individual locations of the cache data dirs
  # for the Cache data, or the Session saves, un-comment the desired settings
  # here:
  #beaker.cache.data_dir = %(here)s/data/cache
  #beaker.session.data_dir = %(here)s/data/sessions
 
  # Specify the database for SQLAlchemy to use:
  # * Postgres is currently required for a production CKAN deployme