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:

Correspondingly, the extension point Deployer is specialized as follows:

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