Deployer
The Purpose
A Deployer provides Semantic Turkey with the ability to export data to some destination other than merely support its download. Different implementations
of this extension point allow to target different types of destination.
The Model
A
Deployer (it.uniroma2.art.semanticturkey.extension.extpts.deployer.Deployer
) is fed with a Source (it.uniroma2.art.semanticturkey.extension.extpts.deployer.Source
) object, which encapsulates the data to be deployed.
Source is in fact an abstract class with two concrete subclasses corresponding to different types of sources:
-
RepositorySource (
it.uniroma2.art.semanticturkey.extension.extpts.deployer.RepositorySource
): encapsulates a connection to a
Repository and a set of named graphs containing the source data
-
FormattedResourceSource (
it.uniroma2.art.semanticturkey.extension.extpts.deployer.FormattedResourceSource)
: encapsulates a
ClosableFormattedResource, that is to say a file with suitable metadata (e.g. MIME type) containing the byte sequence to export
Correspondingly, the extension point Deployer is specialized as follows:
-
RepositorySourcedDeployer (
it.uniroma2.art.semanticturkey.extension.extpts.deployer.RepositorySourcedDeployer
): a deployer fed with a
RepositorySource
-
StreamSourcedDeployer (
it.uniroma2.art.semanticturkey.extension.extpts.deployer.StreamSourcedDeployer
): a deployer fed with a
FormattedResourceSource
Extension Point Details
The tables below summarizes the details of the Deployer extension point.
Name |
Deployer |
Description |
A Deployer can export data to some kind of destination. It can be placed at the end of an export chain, when the
goal is not to merely download the data. |
Identifier |
it.uniroma2.art.semanticturkey.extension.extpts.deployer.Deployer |
Configuration |
n/a |
Settings |
n/a |
Refined by:
Name |
Stream-sourced Deployer |
Description |
A Stream-sourced Deployer can deploy data (stored in a file) to some stream-oriented destination. An implementation
of this extension point may support exporting data to an SFTP server. |
Identifier |
it.uniroma2.art.semanticturkey.extension.extpts.deployer.StreamSourcedDeployer |
Configuration |
n/a |
Settings |
n/a |
and
Name |
Repository-sourced Deployer |
Description |
A Repository-sourced Deployer can deploy data (fetched from a triple repository) to some triple-oriented destination
(e.g. a triple store). An implementation of this extension point may support exporting data to a remote triple store
using the SPARQL 1.1 Graph Store HTTP Protocol. |
Identifier |
it.uniroma2.art.semanticturkey.extension.extpts.deployer.RepositorySourcedDeployer |
Configuration |
n/a |
Settings |
n/a |
Interfaces
The following interface defines the contract for the Deployer extension point.
/*
* Extension point for deployers. They are placed at the end of an export process to deploy the exported data
* somewhere, e.g. a server conforming to the Graph Store API, an FTP server etc...
*/
public interface Deployer extends Extension {
/**
* Deploys the provided resource. The default implementation of this operation delegates the deployment of
* specific resource types to known subclasses.
*
* @param source
* @throws IOException
*/
default void deploy(Source source) throws IOException {
// omitted default implementation
}
}
The following interface defines the contract for the RepositorySourcedDeployer extension point.
/**
* A {@link Deployer} which can deploy a {@link RepositoryConnection}.
*/
public interface RepositorySourcedDeployer extends Deployer {
void deploy(RepositorySource source) throws IOException;
}
The following interface defines the contract for the StreamSourcedDeloyer extension point.
/**
* A {@link Deployer} which can deploy a {@link FormattedResourceSource}.
*/
public interface StreamSourcedDeployer extends Deployer {
void deploy(FormattedResourceSource source) throws IOException;
}
Choosing and Configuring a Deployer
Deployers can be created on demand by the system as they are needed to export data to the destination they support. Nonetheless, they are usually configurable components, the configurations of which can be stored according to the standard configuration/settings mechanism.
Deployer Implementations
Graph Store HTTP Deployer
Name |
Graph Store HTTP Deployer |
Description |
A RepositorySourcedDeployer that deploys RDF data to a destination complying to the
SPARQL 1.1 Graph Store HTTP Protocol
|
Identifier |
it.uniroma2.art.semanticturkey.extension.impl.deployer.sparql.GraphStoreHTTPDeployer |
Configuration |
Scopes:
SYSTEM ,
PROJECT ,
USER ,
PROJECT_USER
Graph Store HTTP Deployer Configuration (it.uniroma2.art.semanticturkey.extension.impl.deployer.sparql.GraphStoreHTTPDeployerConfiguration )
|
Either "graphStoreHTTPEndpoint" or "destinationGraph" shall be set.The credentials are stored without encryption on the server. Be aware that the system administration could be able to see them.
|
Graph Store HTTP endpoint (graphStoreHTTPEndpoint ) |
The address of the endpoint conforming to the HTTP Graph Store protocol. If not provided, it is assumed that the
destination graph is identified directly |
URL
|
Optional |
|
Destination graph (destinationGraph ) |
The graph where data should be deployed. If not provided, the default graph is used |
IRI
|
Optional |
|
Clear first (clearFirst ) |
Tells if already existing data should be cleared fist |
boolean
|
Required |
|
Username (username ) |
Username |
java.lang.String
|
Optional |
|
Password (password ) |
Password |
java.lang.String
|
Optional |
|
|
Settings |
n/a |
HTTP Deployer
Name |
HTTP Deployer |
Description |
A StreamSourcedDeployer that uses the HTTP protocol |
Identifier |
it.uniroma2.art.semanticturkey.extension.impl.deployer.http.HTTPDeployer |
Configuration |
Scopes:
SYSTEM ,
PROJECT ,
USER ,
PROJECT_USER
HTTP Deployer Configuration (it.uniroma2.art.semanticturkey.extension.impl.deployer.http.HTTPDeployerConfiguration )
|
The credentials are stored without encryption on the server. Be aware that the system administration could be able to see
them.
|
Endpoint (endpoint ) |
The address of the endpoint where data will be deployed onto |
URL
|
Required |
|
HTTP Verb (httpVerb ) |
HTTP verb to use |
java.lang.String (either
PUT or
POST ) |
Required |
|
Query Parameters (queryParameters ) |
Additional query parameters |
Map<java.lang.String, java.lang.String>
|
Optional |
|
Request Headers (requestHeaders ) |
Additional request headers |
Map<java.lang.String, java.lang.String>
|
Optional |
|
Username (username ) |
Username |
java.lang.String
|
Optional |
|
Password (password ) |
Password |
java.lang.String
|
Optional |
|
|
Settings |
n/a |
SFTP Deployer
Name |
SFTP Deployer |
Description |
A StreamSourcedDeployer that uses the SFTP protocol |
Identifier |
it.uniroma2.art.semanticturkey.extension.impl.deployer.sftp.SFTPDeployer |
Configuration |
Scopes:
SYSTEM ,
PROJECT ,
USER ,
PROJECT_USER
SFTP Deployer Configuration (it.uniroma2.art.semanticturkey.extension.impl.deployer.sftp.SFTPDeployerConfiguration )
|
The credentials are stored without encryption on the server. Be aware that the system administration could be able to see
them.
|
Host (host ) |
The target host name/address |
URL
|
Required |
|
Port (port ) |
The target port |
integer (default:
21 ) |
Required |
|
Server key fingerprint (serverKeyFingerprint ) |
The fingerprint of the target server. The allowed forms are (MD5:)?[\\dA-F][\\dA-F](:[\\dA-F][\\dA-F]){15} and
SHA(1|224|256|384|512):[Base64 encoding without trailing =] |
java.lang.String
|
Required |
|
Username (username ) |
Username |
java.lang.String
|
Required |
|
Password (password ) |
Password |
java.lang.String
|
Optional |
|
Destination name (destinationPath ) |
The path on the remote host where data will be deployed onto |
java.lang.String
|
Required |
|
Timeout (ms) (timeout ) |
Timeout in milliseconds |
long (default:
300000 ) |
Required |
|
|
Settings |
n/a |
ShowVoc Deployer
Name |
ShowVoc Deployer |
Description |
A RepositorySourcedDeployer targeting ShowVoc deployments |
Identifier |
it.uniroma2.art.semanticturkey.extension.impl.deployer.showvoc.ShowVocDeployer |
Configuration |
Scopes:
SYSTEM ,
PROJECT ,
USER ,
PROJECT_USER
Existing Project ShowVoc Deployer Configuration (it.uniroma2.art.semanticturkey.extension.impl.deployer.showvoc.ExistingProjectShowVocDeployerConfiguration )
|
The credentials are stored without encryption on the server. Be aware that the system administration could be able to see
them. This configuration deploys to an already existing project.
|
Semantic Turkey host (stHost ) |
An URL identifying the base address of the Semantic Turkey REST API. It shall end with a forward slash "/" |
java.lang.String
|
Required |
|
Username (username ) |
The username of the user that will be impersonated when doing the submission |
java.lang.String
|
Required |
|
Password (password ) |
The password of the user that will be impersonated. This must be the password recorded in the backend server, which might not be the one used for authentication, in particular, if SAML login has been enabled. In this case, credentials are stored in the identity server, while upon a user's registration (occuring upon the first login into the system) Semantic Turkey generates a password for the user randomly, and therefore not known by the user. A workaround is to register the users before SAML authentication is enabled, so that it is possible to set a known password for the accounts.
|
java.lang.String
|
Required |
|
Project (project ) |
The name of the destination project |
java.lang.String
|
Required |
|
New Project ShowVoc Deployer Configuration (it.uniroma2.art.semanticturkey.extension.impl.deployer.showvoc.NewProjectShowVocDeployerConfiguration )
|
The credentials are stored without encryption on the server. Be aware that the system administration could be able to see
them. This configuration deploys to an new staging project. It is thus necessary that an administrator makes the project public.
|
Semantic Turkey host (stHost ) |
An URL identifying the base address of the Semantic Turkey REST API. It shall end with a forward slash "/" |
java.lang.String
|
Required |
|
Username (username ) |
The username of the user that will be impersonated when doing the submission |
java.lang.String
|
Required |
|
Password (password ) |
The password of the user that will be impersonated. This must be the password recorded in the backend server, which might not be the one used for authentication, in particular, if SAML login has been enabled. In this case, credentials are stored in the identity server, while upon a user's registration (occuring upon the first login into the system) Semantic Turkey generates a password for the user randomly, and therefore not known by the user. A workaround is to register the users before SAML authentication is enabled, so that it is possible to set a known password for the accounts.
|
java.lang.String
|
Required |
|
Core repository configuration (coreRepoSailConf ) |
The name of the destination project |
Configuration (extension point: it.uniroma2.art.semanticturkey.extension.extpts.repositoryimplconfigurer.RepositoryImplConfigurer )
|
Required |
|
|
Settings |
n/a |
OntoPortal Deployer
Name |
OntoPortal Deployer |
Description |
A RepositorySourcedDeployer that submits an ontology (or more precisely, an OWL ontology or a SKOS thesaurus) to an OntoPortal repository (e.g. BioPortal, EcoPortal, AgroPortal, etc.). The deployer can only make submissions for already existing ontologies (identified through their acronym) on the target repository. The deployer also implements some validation checks, to warn the user about violations of data constraints imposed by OntoPortal and, to some extent, suggest fixes as RDF Transformers. |
Identifier |
it.uniroma2.art.semanticturkey.extension.impl.deployer.ontoportal.OntoPortalDeployer |
Configuration |
Scopes:
SYSTEM ,
PROJECT ,
USER ,
PROJECT_USER
OntoPortal (it.uniroma2.art.semanticturkey.extension.impl.deployer.ontoportal.OntoPortalDeployerConfiguration )
|
The API key is stored without encryption on the server. Be aware that the system administration could be able to see it.
|
API base URL (apiBaseURL ) |
The base URL of the OntoPortal REST API |
java.lang.String
|
Required |
|
API key (apiKey ) |
A valid API key for the OntoPortal REST API. A user''s API key be found on the account page of that user. |
java.lang.String
|
Required |
|
Acronym (acronym ) |
The acronym of the ontology for which the submission is being done |
java.lang.String
|
Required |
|
Description (description ) |
Description of the ontology |
java.lang.String
|
Required |
|
Version (version ) |
Version of the ontology |
java.lang.String
|
Optional |
|
Ontology language (hasOntologyLanguage ) |
Format |
java.lang.String (either "OWL" or "SKOS")
|
Required |
|
Status (status ) |
Status of the ontology |
java.lang.String (either "alpha", "beta", "production" or "retired")
|
Required |
|
Release date (released ) |
Release date. The date shall be formatted as yyyy-mm-dd (e.g. 2020-02-20) |
java.lang.String (shall match ^\d\d\d\d-(0?[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$ )
|
Required |
|
Contacts (contact ) |
Contacts for the ontology. Each contact should be provided as a string matching this pattern: name (email) |
List<@RegExp(regexp = "^\\s*(?<name>.+)\\s*\\((?<email>.+)\\s*\\)$") String>
|
Required |
|
Homepage (homepage ) |
Address of the main web page of the ontology |
java.lang.String
|
Optional |
|
Documentation (documentation ) |
Address of a web page providing documentation for the ontology |
java.lang.String
|
Optional |
|
Publications (publication ) |
Address of a web page listing publications about the ontology |
java.lang.String
|
Optional |
|
EcoPortal (it.uniroma2.art.semanticturkey.extension.impl.deployer.ontoportal.EcoPortalDeployerConfiguration )
|
The API key is stored without encryption on the server. Be aware that the system administration could be able to see it.
|
API base URL (apiBaseURL ) |
The base URL of the OntoPortal REST API. If no value is provided, then it will be used the address of the official installation API |
java.lang.String
|
Optional |
|
API key (apiKey ) |
A valid API key for the OntoPortal REST API. A user''s API key be found on the account page of that user. |
java.lang.String
|
Required |
|
Acronym (acronym ) |
The acronym of the ontology for which the submission is being done |
java.lang.String
|
Required |
|
Description (description ) |
Description of the ontology |
java.lang.String
|
Required |
|
Version (version ) |
Version of the ontology |
java.lang.String
|
Optional |
|
Ontology language (hasOntologyLanguage ) |
Format |
java.lang.String (either "OWL" or "SKOS")
|
Required |
|
Status (status ) |
Status of the ontology |
java.lang.String (either "alpha", "beta", "production" or "retired")
|
Required |
|
Release date (released ) |
Release date. The date shall be formatted as yyyy-mm-dd (e.g. 2020-02-20) |
java.lang.String (shall match ^\d\d\d\d-(0?[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$ )
|
Required |
|
Contacts (contact ) |
Contacts for the ontology. Each contact should be provided as a string matching this pattern: name (email) |
List<@RegExp(regexp = "^\\s*(?<name>.+)\\s*\\((?<email>.+)\\s*\\)$") String>
|
Required |
|
Homepage (homepage ) |
Address of the main web page of the ontology |
java.lang.String
|
Optional |
|
Documentation (documentation ) |
Address of a web page providing documentation for the ontology |
java.lang.String
|
Optional |
|
Publications (publication ) |
Address of a web page listing publications about the ontology |
java.lang.String
|
Required |
|
Creators (creators ) |
The main researchers involved in producing the data, or the authors of the publication, in priority order |
List<java.lang.String>
|
Required |
|
Titles (titles ) |
The main researchers involved in producing the data, or the authors of the publication, in priority order |
List<Properties>
each item having the schema
Title (title ) |
A name or title by which a resource is known. May be the title of a dataset or the name of a piece of software |
Literal (must have a language tag)
|
Required |
|
Title type (titleType ) |
The type of title |
java.lang.String (either "AlternativeTitle", "Subtitle", "TranslatedTitle" or "Other") (default: "Other")
|
Required |
|
|
Required |
|
Publisher (publisher ) |
The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource |
java.lang.String
|
Required |
|
Publication year (publicationYear ) |
The year when the data was or will be made publicly available |
integer
|
Required |
|
Resource type (resourceType ) |
A description of the resource. The format is open, but the preferred format is a single term of some detail |
java.lang.String (possible values include but are not limited to "Authority File", "Controlled Vocabulary", "Glossay", "Ontology" and "Thesaurus")
|
Required |
|
Resource type general (resourceTypeGeneral ) |
The general type of a resource |
java.lang.String (either "Dataset" or "Other") (default: "Dataset")
|
Required |
|
|
Settings |
n/a |