The Linked Data API for Open PHACTS.
Based on the Puelia PHP implementation of the Linked Data API specification.
This is a repository to host API configuration files and code extensions
Requirements are php 5.2, with php_xsl
, lib_curl
, and mod_rewrite
and .htaccess
override enabled.
Make sure that Apache's DocumentRoot
directory and (all parent directories from /var/ forward) are writable by the user running Apache
The sparql endpoint is set from environment variable OPS_SPARQL_ENDPOINT
eg export OPS_SPARQL_ENDPOINT=http://sparql-endpoint:8890/sparql
and read in deployment.settings.php
.
The IMS API endpoint is set from environment variable IMS_ENDPOINT
eg export IMS_ENDPOINT=http://ims-endpoint:8000
and read in deployment.settings.php
.
The OPS Search API endpoint is set from environment variable OPS_SEARCH_ENDPOINT
eg export OPS_SEARCH_ENDPOINT=http://somewhere.com:8839
and read in deployment.settings.php
.
Memcache location is set from environment variable MEMCACHE_ENDPOINT
eg export MEMCACHE_ENDPOINT=localhost
.
By default memcache is not used, to enable it set environment variable USE_MEMCACHE
eg export USE_MEMCACHE=TRUE
.
You can also run on localhost without Apache using php -S localhost:3000. Note that this address will only work on localhost on your machine.
You can also run on localhost without Apache using php -S localhost:3000.
This application is also available as a Docker image: openphacts/ops-linkeddataapi
This image will provide the Open PHACTS API on HTTP port 80
, which can be exposed
using the -p
docker parameter.
This image relies on linking to these other docker images as the following aliases:
memcached
: memcachedims
: openphacts/identitymappingservice/sparql
: stain/virtuoso
Details about starting and populating those are provided at their respective READMEs. The simplest option to start up the Open PHACTS platform is usually the ops-platform-setup configuration for Docker Compose.
Additionally these environment variables define the external services for ConceptWiki and Chemical Resolution Service (these are not currently available as Docker containers):
CRS
(default: https://crs/api/v1/)CONCEPTWIKI
(default: http://conceptwiki:8080/web-ws/concept)USE_MEMCACHE
(TRUE or FALSE - default FALSE)MEMCACHE_ENDPOINT
(default 'localhost')IMS_ENDPOINT
(default: 'localhost:3004')OPS_SPARQL_ENDPOINT
(default: none, assumed to be defined in the config settings for each API call)OPS_SEARCH_ENDPOINT
(default: none, assumed to be defined in the config settings for the OPS search API call)
The default values for CRS
and CONCEPTWIKI
access the aliases crs
and conceptwiki
, but
if you don't have your own installation of these services, you might use the
public services, by adding the following to docker run
:
--env CRS=https://chemistry.openphacts.org/api/v1/ \
--env CONCEPTWIKI=http://www.conceptwiki.org/web-ws/concept
You can also add settings for memcache:
-
'USE_MEMCACHE' (TRUE or FALSE - default FALSE)
-
'MEMCACHE_ENDPOINT' (default 'localhost')
--env USE_MEMCACHE=TRUE --env MEMCACHE_ENDPOINT=my-memcache
You can also tell the LDAPI where to find the IMS and the sparql endpoint:
--env IMS_ENDPOINT=http://a.b.c:3000
--env OPS_SPARQL_ENDPOINT=http://d.e.f:8000
You can also set the endpoint to use for searches that will use the OPS Search component via the LDAPI:
--env OPS_SEARCH_ENDPOINT=http://localhost:8839
If OPS_SEARCH_ENDPOINT
is not set then it will use whatever is in the config files.
If using memcache or the OPS Search component via docker then you need to ensure that both the LDAPI and these containers are on the same docker network:
docker network create ops-ldapi-network
then you can refer to the MEMCACHE_ENDPOINT
or OPS_SEARCH_ENDPOINT
by it's internal docker network DNS eg my-memcache
. OPS Search can also have the port included eg ops-search:8839
.
To run (note that this example uses the deprecated docker --link
command):
docker run --name ops-linkeddataapi -p 8081:80 \
--network=ops-ldapi-network \
--env CRS=https://chemistry.openphacts.org/api/v1/ \
--env CONCEPTWIKI=http://www.conceptwiki.org/web-ws/concept \
--env OPS_SEARCH_ENDPOINT=http://localhost:8839 \
--env USE_MEMCACHE=TRUE \
--env MEMCACHE_ENDPOINT=my-memcache \
--link memcached:memcached \
--link identitymappingservice:ims \
--link virtuoso:sparql \
-d openphacts/ops-linkeddataapi
The above will expose the Open PHACTS Linked Data API on
http://localhost:8081 (or equivalent)
and link to existing Docker containers memcached
, identitymappingservice
and virtuoso
(which must already be running), and the
public APIs for CRS and
ConceptWiki. It will also tell the LDAPI to use the memcache container called my-memcache
on the docker network ops-ldapi-network
.
If using a docker network then there is no need to link
the containers but you must ensure that they are on the same docker network. You can either attach the container at run time (as in the example above) or add it afterwards eg. docker network connect ops-ldapi-network ops-linkeddataapi
.
The API includes a Swagger definition in JSON
for the exposed services, available at /swagger
- for example
http://localhost:8081/swagger. This file is in api-config-files/swagger.json
.
The swagger files for previous API versions can be found in api-config-files/swagger/old/
.
The swagger file for the current API can also be found in api-config-files/swagger/current/
.
Note that the hostname and port returned as basePath
here
depends on the URL the swagger file is accessed at. If you are
exposing the API via a proxy, the swagger definition might be
wrongly exposing the internal URI.
To override the basePath
, set the BASE_PATH
environment variable.
For example:
docker run -p 8081:80 \
--env BASE_PATH=http://cool.example.com/ \
-d openphacts/ops-linkeddataapi