All Projects → dlcs → elucidate-server

dlcs / elucidate-server

Licence: MIT license
A W3C and OA compliant Web Annotation server

Programming Languages

java
68154 projects - #9 most used programming language
PLpgSQL
1095 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to elucidate-server

Web Annotation
Web Annotation Working Group repository, see README for links to specs
Stars: ✭ 112 (+133.33%)
Mutual labels:  w3c, json-ld
MangoServer
A MongoDB implementation of the W3C Web Annotation Protocol
Stars: ✭ 16 (-66.67%)
Mutual labels:  w3c, annotations
cocktail
Traits, Talents & Annotations for NodeJS.
Stars: ✭ 65 (+35.42%)
Mutual labels:  annotations
dochooks
WordPress hooks in method comments. Annotated hooks.
Stars: ✭ 33 (-31.25%)
Mutual labels:  annotations
jsonld
R wrapper for jsonld.js JavaScript library
Stars: ✭ 34 (-29.17%)
Mutual labels:  json-ld
php-simple-request
php-simple-request is a request parser library designed to simplify requests validation and filtering using annotations, generating at the same time an object representation from the request data.
Stars: ✭ 15 (-68.75%)
Mutual labels:  annotations
etiketai
Etiketai is an online tool designed to label images, useful for training AI models
Stars: ✭ 63 (+31.25%)
Mutual labels:  annotations
unfurl
Extract rich metadata from URLs
Stars: ✭ 41 (-14.58%)
Mutual labels:  json-ld
annotation-cache-bundle
Annotation based caching for services inside a symfony container
Stars: ✭ 16 (-66.67%)
Mutual labels:  annotations
Symfony-4-by-Samples
Symfony 4 by Samples is a personal project in which I will be creating small demos with tutorial in which to learn the symfony framework 4. Each of the samples contains a README.md file that indicates the purpose of the sample plus an step by step guide to reproduce it. Basic topics, login and register form, authentication, webpack encore, sass…
Stars: ✭ 40 (-16.67%)
Mutual labels:  annotations
adversaria
Typeclass interfaces to access user-defined Scala annotations
Stars: ✭ 22 (-54.17%)
Mutual labels:  annotations
SimpleVideoAnnotation
A simple video annotation made with python + OpenCV for detection in YoloV2 format
Stars: ✭ 13 (-72.92%)
Mutual labels:  annotations
WebDriver
Web Driver UDF for AutoIt
Stars: ✭ 74 (+54.17%)
Mutual labels:  w3c
hookey
Enables all the DLCs. Like Creamapi but just for linux and a subset of Paradox games.
Stars: ✭ 87 (+81.25%)
Mutual labels:  dlcs
ClassifyCNV
ClassifyCNV: a tool for clinical annotation of copy-number variants
Stars: ✭ 33 (-31.25%)
Mutual labels:  annotations
linkedresearch.org
🌐 linkedresearch.org
Stars: ✭ 32 (-33.33%)
Mutual labels:  annotations
lingua
A PHP-7 language codes converter, from and to the most common formats (ISO or not)
Stars: ✭ 35 (-27.08%)
Mutual labels:  w3c
com2ann
Tool for translation type comments to type annotations in Python
Stars: ✭ 115 (+139.58%)
Mutual labels:  annotations
X.Web.Sitemap
Simple sitemap generator for .NET
Stars: ✭ 66 (+37.5%)
Mutual labels:  w3c
rubocop-linter-action
Rubocop Linter Action: A GitHub Action to run Rubocop against your code!
Stars: ✭ 86 (+79.17%)
Mutual labels:  annotations

Elucidate

Elucidate is a Web Annotation server that is compliant with both the W3C Web Annotation Data Model and associated protocol, and the Open Annotation (OA) Data Model.

Build Status

Branch Status
master Build Status
develop Build Status

Getting Started

Prerequisites

Elucidate Server has been built and tested against:

Java 8+
Apache Tomcat 8+
PostgreSQL 9.4+

Elucidate Server and its dependencies are written in pure Java, and is designed to work with PostgreSQL by default.

Building

The Elucidate Server has a number of dependencies that must be built first:

  • elucidate-parent
    • Parent Maven project that defines dependency library version numbers and common dependencies amongst all Elucidate projects.
  • elucidate-common-lib
    • Contains common classes that are used by similar projects.
  • elucidate-converter
    • Simple library that (at present) allows for conversion between a W3C Web Annotation and OA Web Annotation.

Each dependency and the Elucidate Server itself can be built using Maven:

mvn clean package install -U

Configuration

Elucidate Server requires that several configuration properties are set to function correctly.

Name Default value Description
db.user <empty> Database user to authenticate as.
db.url <empty> JDBC database URL to connect to.
base.scheme "http" The URI scheme that annotation IRIs will use.
base.host "localhost" The hostname that annotation IRIs will use.
base.port 8080 The port that annotation IRIs will use. May be omitted if it set to a default HTTP/HTTPS port.
base.path "/annotation" The path prefix that that annotation IRIs will use.
log4j.config.location "classpath:logging/log4j.xml" A path to a log4j XML configuration/properties file.
auth.enabled false A flag indicating if authorization on annotation access should be enabled.
auth.token.verifierType secret Either secret or pubkey, indicating whether the JWT verification key is a shared secret or an RSA public key.
auth.token.verifierKey <empty> The secret or public key used to verify signed tokens.
auth.token.uidProperties sub,user_name The name of the JWT property that represents a unique user ID.

A full listing of configuration options available to change can be found in elucidate-server.properties. Any of these options can be configured or overridden using JNDI environment properties by passing a Java system property on the command line or setting an environment variable.

Note: if set as an environment variable, the option name should be uppercase with any hyphens and periods replaced with underscores. E.g., base.port becomes BASE_PORT.

Database

Elucidate Server has been built and tested against PostgreSQL 9.4+ (the jsonb type is required for persistence).

A Liquibase changelog contains the SQL scripts required to create the Elucidate Server schema. On first connection to a JDBC URI (given by db.url) the changes will be applied and a changelog table created in the database for any subsequent runs.

Security

Elucidate Server supports user authentication and authorization using detached JWTs as credentials. Authentication can be enabled or disabled by toggling the auth.enabled property listed above. Those tokens can be verified using either a shared secret key or RSA public key (given by auth.token.verifierType and auth.token.verifierKey).

Since Elucidate doesn't store authoritative user information on its own, it relies on the token providing a unique property that can be used to refer to that user throughout the lifetime of their interactions with the annotation server. A list of properties that will be searched for the unique value can be configured by setting the auth.token.uidProperties option.

Usage

See USAGE.md for some sample requests.

Built With

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Contributors should ensure that their code is formatted in a style that is as close to the existing style as possible.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].