1.3.2. Semantic Translation enabler

Documentation for the Semantic Translation Enabler of ASSIST-IoT.

1.3.2.1. Introduction

Semantic interoperability is the ability of different applications and business partners to exchange data with unambiguous, shared meaning. As a result, data analysis and knowledge discovery can be done on a federation of systems.

Semantic Translation Enabler (STE) enables alignments-based semantic translation of RDF data (messages). At its core STE builds on a considerably enhanced version of the Inter Platform Semantic Mediator (IPSM) component, developed by the INTER-IoT project.

The translation performed by STE is based on alignments and uses a deployment-specific modularized central ontology. For IoT domain, the core modules describing, e.g. devices, observations are (usually) based on GOIoTP (Generic Ontology of IoT Platforms) that is a meta-data reference data model. Additionally, any domain specific module can be included e.g. medical ontology, logistic ontology. However, central ontology can be any ontology that can serve as a central data model. It is not directly used configure STE but should be considered when defining alignments that are used for STE configuration. Additionally, any domain specific module can be included e.g. medical ontology, logistic ontology.

The alignment is a set of correspondences between simple entities or complex structure from source and target ontologies. It contains rules for transformation between input and output RDF graphs. Specifically, STE translates RDF graph named payload (that is part of the message send to STE). Alignments are parts of STE instance configuration, and are used directly to execute translation. Semantic translation always constitutes application of two alignments - one from source ontology to central ontology, the other from central ontology to target ontology.

The following figure shows a sample situation with four IoT artifacts (P1-4). Each with it’s own ontology (O1-4). The central ontology contains modules g1…gn. The two-way communication requires preparation of two alignments: (i) from artifact’s ontology to central ontology e.g. A1G, (ii) from central ontology to artifact’s ontology e.g. AG1. Each alignments contains correspondences between ontology modules that are required for this part of communication. Overview of translation with central modularized ontology

Overview of translation with central modularized ontology

To achieve semantic interoperability between two artifacts:

  1. Instantiate modular central ontology

  2. Select/define artifact’s ontologies: create from scratch or use one of existing tools

  3. Align semantics between ontology of each artifact and central ontology (set of alignments)

  4. Implement syntactic translators

  5. Configure STE - upload alignments, create translation channels

The following figure shows a process of sending a message from source to target artifact that needs to be semantically and syntactically translated. Process overviewProcess overview

The message originates at source artifact in it’s format and semantics e.g. XML message with respect to XML Schema. To use STE the message needs to be transformed to RDF with source artifact’s semantics. This translation is called syntactic translation. In fact, when STE is to be used in a standalone mode (without other INTER-IoT layers), syntactic translation can be implemented in any arbitrary component that will “prepare” input for semantic translation. Note that, conversion to RDF may not be necessary, when artifacts already have communication based on RDF. When a source artifact does not support semantics, an RDF represantation of data exchanged with the ecosystem needs to be proposed.

When the message arrives at STE, the RDF named graph payload is translated with respect to configuration of the semantic translation channel (see Architecture). Usually two alignments are applied, however STE can be configured with special predefined IDENTITY alignment that does not change the graph. Another remark here, is that STE follows the rule: translate only what can be translated, leave the rest as it was. The resultant message is expressed in RDF with semantics corresponding to target semantic of last applied alignment.

This message can be feed into another syntactic translator that will transform it’s format to e.g. JSON cosidering target artifact’s semantics. Another possible scenario is that there are applications consuming data in RDF and central semantics. In such case, second syntactic translation is not necessary.

1.3.2.2. IPSM Architecture

STE is a component for performing semantic translation that can be use in a standalone mode or in combination with other ASSIST-IoT enablers and application-specific tools. It has a REST interface for configuration, and both publish-subscribe and REST interfaces for translation. The used communication infrastructure that follows publish-subscribe paradigm is Apache Kafka.

Configuration includes:

  1. Uploading alignment files that define the translation rules

  2. Defining semantic translation channels - each channel is defined with input and output topic names, identifiers (name and version) of input and output alignments

Additionally, the following operations are possible:

  1. List all uploaded alignments

  2. Delete alignment identified by name and version

  3. Retrieve alignment identified by name and version

  4. List created translation channels

  5. Delete channel identified by id

Performing semantic translation means sending input RDF message, and receiving output RDF message. Client can publish message to input topic of semantic translation channel, and consume message from output topic of semantic translation channel.

Another possibility is to use REST API for performing a synchronous semantic translation. Here, client in a request sends input RDF graph, and a sequence of alignments that should be applied. The response contains translated RDF graph.

Architecture Architecture overview

Alignments and central ontology

STE can perform translation between any pair of RDF graphs. The translation can be direct or composed from multiple alignments depending on the context. In a typical IoT platforms integration case, we use Central Ontology (CO) so that the translation has two steps: translate from source semantics to CO and translate from CO to target ontology. As a result, integration of a new platform into the ecosystem means preparing alignments to and/or from CO (depends on requirement for one- or bi-directional communication requirement).

Direct translation means that only one alignment is applied that defines mappings between source and target semantics. To configure STE to act in this way a translation channel should be defined that has as input alignment defined alignment and as output IDENTITY alignment (not changing the RDF graph). Direct translation with REST API means specifying a sequence of alignments to be applied consisting of only one alignment.

Composed translation means applying more than one alignment. In pub-sub approach, by default two alignments are used. In REST-based translation an arbitrary alignments sequence can be specified.

Note that in each case, the translation process should be handled by one semantic translation channel. By default, a translation channel is configured with two alignments that are applied sequentially.

1.3.2.3. IPSM Central ontology

Central ontology is not directly used by STE, but it needs to be established for a given STE deployment, to enable construction of consistent alignments. It is modularized, so that alignments can be created to and from selected modules, e.g. meteorological, logistic events, depending on the context of “conversation”. Specifically, there is no need to align the whole data models if an artifact that needs to be connected to the ecosystem exchanges only message related only to one aspect e.g. meteorological observation data.

In case of IoT-centric applications the central ontology can be based on GOIoTP (Generic Ontology of IoT Platforms) and domain specific modules.

GOIoTP and GOIoTPex modules GOIoTP and GOIoTPex modules

In general case, central ontology can be any aribitrary ontology, since this does not influence the semantic translation engine provided by IPSM. However, semantic engineer preparing the deployment should keep in mind that:

  • central ontology should cover all “topics” of conversations in platforms ecosystem

  • it should be clear enough to enable querying and reasoning done directly on it

  • it should contain subject-specific modules that can be independently maintained and versioned (for easier change management)

1.3.2.4. User guide Alignment based semantic translation

The process of semantic translation is performed by STE based on the configuration of translation channel (using Apache Kafka publish-subscribe mode) or sequence of alignments received in REST request (using REST API). The steps element in an alignment will defines in what order cells are applied. Each cell is applied to the RDF graph being an output of previous cell. The application of a cell means that SPARQL UPDATE is generated from graph patterns in entity1 and entity2.

Lets know analyze step by step an example of transformation of one predefined RDF graph into another.

Let input RDF be:

{
 "@id": "p1ont:PositionMeasurementValue",
 "@type": "geo:Point",
 "geo:lat": {
   "@type" : "http://www.w3.org/2001/XMLSchema#float",
   "@value" : "52.3"
 },
 "geo:long": {
   "@type" : "http://www.w3.org/2001/XMLSchema#float",
   "@value" : "98.2"
 }
},
{
 "@id": "p2ont:Sensor_1",
 "@type": "saref:Sensor",
 "saref:IsUsedFor": {
   "@id": "p2ont:position"
 },
 "saref:hasFunction": {
   "@id": "p2ont:sensingFunction"
 },
 "saref:makesMeasurement": {
   "@id": "p2ont:Measurement_1"
 }
},
{
 "@id": "p2ont:Measurement_1",
 "@type": "saref:Measurement",
 "saref:hasTimestamp": {
   "@id": "p2ont:Time_1"
 },
 "saref:hasValue": {
   "@id": "p2ont:PositionMeasurementValue"
 },
 "saref:relatesToProperty": {
   "@id": "p2ont:positionProperty"
 }
},
{
 "@id": "p2ont:Time_1",
 "@type": "time:Instant",
 "time:inXSDDateTime": {
   "@type" : "http://www.w3.org/2001/XMLSchema#dateTime",
   "@value" : "2017-05-08T13:48:18"
 }
},
{
 "@id": "p2ont:sensingFunction",
 "@type": "saref:SensingFunction"
},
{
 "@id": "p2ont:positionProperty",
 "@type": "saref-ps:PositionProperty"
}

The corresponding diagram looks as follows:

Input RDF

Input RDF

RDF input

The resultant RDF should be:

{
   "@id" : "_:b0",
   "@type" : "InterIoT:central#Position"
 }, {
   "@id" : "p2ont:PositionMeasurementValue",
   "@type" : [ "sosa:Result", "http://www.opengis.net/ont/geosparql#Geometry" ],
   "http://www.opengis.net/ont/geosparql#asWKT" : {
     "@type" : "http://www.opengis.net/def/sf/wktLiteral",
     "@value" : "Point(52.3 98.2)"
   }
 }, {
   "@id" : "p2ont:Measurement_1",
   "@type" : "sosa:Observation",
   "sosa:hasResult" : {
     "@id" : "p2ont:PositionMeasurementValue"
   },
   "sosa:madeBySensor" : {
     "@id" : "p2ont:Sensor_1"
   },
   "sosa:observedProperty" : {
     "@id" : "_:b0"
   },
   "sosa:resultTime" : {
     "@type" : "xsd:dateTime",
     "@value" : "2017-05-08T13:48:18"
   }
 }
],
 "@id" : "InterIoTMsg:payload"
}

The corresponding resultant graph is:

Input RDF

Input RDF

RDF output

Please note, that not all part of RDF graph are translated. Some parts will be left untouched as in input graph. The aforementioned code snippet and image present only part of the RDF graph that is a result of the translation.

Let us know analyze step by step an alignment that will allow to translate part of the input RDF graph into aforementioned output RDF graph.

<Alignment
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:wgs84_pos="http://www.w3.org/2003/01/geo/wgs84_pos#"
       xmlns:sripas="http://www.inter-iot.eu/sripas#"
       xmlns="http://www.inter-iot.eu/sripas#"
       xmlns:sosa="http://www.w3.org/ns/sosa/"
       xmlns:geosparql="http://www.opengis.net/ont/geosparql#"
       xmlns:saref="https://w3id.org/saref#"
       xmlns:saref-ps="http://ontology.tno.nl/saref/positionsensor#"
       xmlns:time="http://www.w3.org/2006/time#"
       xmlns:co="http://inter-iot.eu/central"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
       xmlns:geo-sf="http://www.opengis.net/def/sf/"
       name="alignDemo_P2_CO" version="1.0" creator="P2_admin">
   <onto1>
       <Ontology about="http://platform2.eu/sensors#">
           <formalism>
               <Formalism name="OWL2.0" uri="http://www.w3.org/2002/07/owl#"/>
           </formalism>
       </Ontology>
   </onto1>
   <onto2>
       <Ontology about="http://www.inter-iot.eu/central">
           <formalism>
               <Formalism name="OWL2.0" uri="http://www.w3.org/2002/07/owl#"/>
           </formalism>
       </Ontology>
   </onto2>
   <steps>
       <step order="1" cell="cell1"/>
       <step order="2" cell="cell2"/>
       <step order="3" cell="cell3"/>
   </steps>
   <map>
       <Cell id="cell1">
           <entity1>
               <sripas:node_CTZ>
                   <saref:makesMeasurement>
                       <sripas:node_CTC>
                           <rdf:type rdf:resource="&saref;Measurement"/>
                           <saref:hasValue>
                               <sripas:node_CTA/>
                           </saref:hasValue>
                           <saref:hasTimestamp>
                               <sripas:node_CTB>
                                   <time:inXSDDateTime>
                                       <sripas:node_x/>
                                   </time:inXSDDateTime>
                               </sripas:node_CTB>
                           </saref:hasTimestamp>
                       </sripas:node_CTC>
                   </saref:makesMeasurement>
               </sripas:node_CTZ>
           </entity1>
           <entity2>
               <sripas:node_CTC>
                   <rdf:type rdf:resource="&sosa;Observation"/>
                   <sosa:observedProperty>
                       <rdf:Description>
                           <rdf:type rdf:resource="&co;Position"/>
                       </rdf:Description>
                   </sosa:observedProperty>
                   <sosa:madeBySensor>
                       <sripas:node_CTZ/>
                   </sosa:madeBySensor>
                   <sosa:hasResult>
                       <sripas:node_CTA/>
                   </sosa:hasResult>
                   <sosa:resultTime>
                       <sripas:node_x/>
                   </sosa:resultTime>
               </sripas:node_CTC>
           </entity2>
           <relation>=</relation>
           <typings>
               <typing about="&sripas;node_x" datatype="&xsd;dateTime"/>
           </typings>
       </Cell>
       <Cell id="cell2">
           <entity1>
               <sripas:node_CTX>
                   <rdf:type rdf:resource="&wgs84_pos;Point"/>
                   <wgs84_pos:lat>
                       <sripas:node_x/>
                   </wgs84_pos:lat>
                   <wgs84_pos:long>
                       <sripas:node_y/>
                   </wgs84_pos:long>
               </sripas:node_CTX>
           </entity1>
           <entity2>
               <sripas:node_CTX>
                   <rdf:type rdf:resource="&geosparql;Geometry"/>
                   <rdf:type rdf:resource="&sosa;Result"/>
                   <geosparql:asWKT>
                       <sripas:node_z/>
                   </geosparql:asWKT>
               </sripas:node_CTX>
           </entity2>
           <relation>=</relation>
           <sripas:transformation>
               <function about="str">
                   <param order="1" about="&sripas;node_x"/>
                   <return about="&sripas;node_sx"/>
               </function>
               <function about="str">
                   <param order="1" about="&sripas;node_y"/>
                   <return about="&sripas;node_sy"/>
               </function>
               <function about="concat">
                   <param order="1" val="Point("/>
                   <param order="2" about="&sripas;node_sx"/>
                   <param order="3" val=" "/>
                   <param order="4" about="&sripas;node_sy"/>
                   <param order="5" val=")"/>
                   <return about="&sripas;node_z"/>
               </function>
           </sripas:transformation>
           <filters>
               <filter about="&sripas;node_x" datatype="http://www.w3.org/2001/XMLSchema#float"/>
               <filter about="&sripas;node_y" datatype="http://www.w3.org/2001/XMLSchema#float"/>
               <filter about="&sripas;node_sx" datatype="http://www.w3.org/2001/XMLSchema#string"/>
               <filter about="&sripas;node_sy" datatype="http://www.w3.org/2001/XMLSchema#string"/>
           </filters>
           <typings>
               <typing about="&sripas;node_z" datatype="&geo-sf;wktLiteral"/>
           </typings>
       </Cell>
   </map>
</Alignment>

The translation includes two steps as indicated in:

<steps>
       <step order="1" cell="cell1"/>
       <step order="2" cell="cell2"/>
</steps>

The first step is defined as:

<Cell id="cell1">
          <entity1>
              <sripas:node_CTZ>
                  <saref:makesMeasurement>
                      <sripas:node_CTC>
                          <rdf:type rdf:resource="&saref;Measurement"/>
                          <saref:hasValue>
                              <sripas:node_CTA/>
                          </saref:hasValue>
                          <saref:hasTimestamp>
                              <sripas:node_CTB>
                                  <time:inXSDDateTime>
                                      <sripas:node_x/>
                                  </time:inXSDDateTime>
                              </sripas:node_CTB>
                          </saref:hasTimestamp>
                      </sripas:node_CTC>
                  </saref:makesMeasurement>
              </sripas:node_CTZ>
          </entity1>
          <entity2>
              <sripas:node_CTC>
                  <rdf:type rdf:resource="&sosa;Observation"/>
                  <sosa:observedProperty>
                      <rdf:Description>
                          <rdf:type rdf:resource="&co;Position"/>
                      </rdf:Description>
                  </sosa:observedProperty>
                  <sosa:madeBySensor>
                      <sripas:node_CTZ/>
                  </sosa:madeBySensor>
                  <sosa:hasResult>
                      <sripas:node_CTA/>
                  </sosa:hasResult>
                  <sosa:resultTime>
                      <sripas:node_x/>
                  </sosa:resultTime>
              </sripas:node_CTC>
          </entity2>
          <relation>=</relation>
          <typings>
              <typing about="&sripas;node_x" datatype="&xsd;dateTime"/>
          </typings>
      </Cell>

Here, a an input structure of RDF with device that makes a measurement is specified according to SAREF ontology. Measurement has indicated properties for value and time. This structure is translated to observation made by sensor in SSN/SOSA ontology. In this case observation is also characterized by result value and result time. Note, that instance representing result is reused (the same URI) but it’s type is translated. The entity stored in variable node_CTZ representing SAREF device is placed in a different position in output graph - it’s value of sosa:madeBySensor property.

In this step we also add information about observed property that is related to SOSA observation with sosa:observedProperty. Here, we generate a blank node of type &co;Position. This is class is assumed to be a subclass of ssn:ObservableProperty in SSN/SOSA ontology, but is specialized as property related to geospatial position. Note that the first step defines a large transformation, however the same result can be achived by applying several more simple consecutive steps. If the input RDF graph is stable when it comes to structure then large part of it can be translated in one step.

The SPARQL update for the above cell is:

DELETE {
  ?node_CTZ <https://w3id.org/saref#makesMeasurement> ?node_CTC.
  ?node_CTB <http://www.w3.org/2006/time#inXSDDateTime> ?node_x.
  ?node_CTC <https://w3id.org/saref#hasTimestamp> ?node_CTB.
  ?node_CTC <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/saref#Measurement>.
  ?node_CTC <https://w3id.org/saref#hasValue> ?node_CTA.
} INSERT {
  _:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://inter-iot.eu/central#Position>.
  ?node_CTC <http://www.w3.org/ns/sosa/resultTime> ?node_x_typed.
  ?node_CTC <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/sosa/Observation>.
  ?node_CTC <http://www.w3.org/ns/sosa/observedProperty> _:b0.
  ?node_CTC <http://www.w3.org/ns/sosa/madeBySensor> ?node_CTZ.
  ?node_CTC <http://www.w3.org/ns/sosa/hasResult> ?node_CTA.
} WHERE {
  ?node_CTZ <https://w3id.org/saref#makesMeasurement> ?node_CTC.
  ?node_CTB <http://www.w3.org/2006/time#inXSDDateTime> ?node_x.
  ?node_CTC <https://w3id.org/saref#hasTimestamp> ?node_CTB.
  ?node_CTC <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/saref#Measurement>.
  ?node_CTC <https://w3id.org/saref#hasValue> ?node_CTA.
  BIND(STRDT(STR(?node_x), <http://www.w3.org/2001/XMLSchema#dateTime>) AS ?node_x_typed)
}

The RDF graph after applying this cell is:

RDF after applying *cell1*

RDF after applying cell1

RDF after cell1

1.3.2.5. Input and output RDF

1.3.2.6. Deployment Installation

The installation procedure documentation for the Semantic Translation Enabler is under development.

1.3.2.7. Developers guide REST API Overview

Semantic Translation Enabler API

1.3.2.7.1. Version information

Version : 1.0.0

1.3.2.7.2. URI scheme

BasePath : / Schemes : HTTP

1.3.2.7.3. Tags

  • Alignments

  • Channels

  • Logging

  • Translation

1.3.2.7.4. Consumes

  • application/json

1.3.2.7.5. Produces

  • application/json

1.3.2.8. Developers guide REST API Definitions

### Alignment

Name

Description

Schema

creator optional

Alignment creator

string

description optional

Alignment description

string

map required

map

map

name required

Alignment name

string

onto1 required

onto1

onto1

onto2 required

onto2

onto2

steps required

Steps

steps

version required

Alignment version

string

map

Name

Description

Schema

Cell optional

Cell

Cell

Cell

Name

Description

Schema

entity1 required

The first aligned ontology entity

object

entity2 required

The second aligned ontology entity

object

relation required

Relation

string

onto1

Name

Description

Schema

Ontology required

Contains the URI identifying the ontology

Ontology

Ontology

Name

Description

Schema

about optional

URI identifying the ontology

string

onto2

Name

Description

Schema

Ontology optional

Contains the URI identifying the ontology

Ontology

Ontology

Name

Description

Schema

about optional

URI identifying the ontology

string

steps

Name

Description

Schema

step optional

Alignment step

step

step

Name

Description

Schema

cell optional

Alignment cell ID

string

order optional

Order of cell application

integer

### AlignmentID

Name

Description

Schema

name required

Alignment name

string

version required

Alignment version

string

### AlignmentInfo

Name

Description

Schema

creator required

Alignment creator

string

date required

UNIX timestamp of upload to STE

integer

descId required

Business identifier

string

description required

Alignment description

string

id required

Technical identifier

integer

name required

Name of the alignment

string

sourceOntologyURI required

URI of the source ontology for alignment

string

targetOntologyURI required

URI of the target ontology for alignment

string

version required

Alignment version

string

### ChannelConfig

Name

Description

Schema

inpAlignmentName required

Name of the input alignment, used for translating the incoming RDF data

string

inpAlignmentVers ion required

Version of the input alignment, used for translating the incoming RDF data

string

outAlignmentName required

Name of the output alignment, used for translating the outgoing RDF data

string

outAlignmentVers ion required

Version of the output alignment, used for translating the outgoing RDF data

string

parallelism optional

Internal parallelism of the channel, e.g., the value 5 means that the channel can consume 5 messages in parallel (preserving their time order)

integer

sink required

Identifier of the sink of the channel, i.e., Apache Kafka topic to which STE publishes translated RDF data

string

source required

Identifier representing the source of the channel, i.e. Apache Kafka topicfrom which STE reads the RDF data to be translated

string

### ChannelInfo

Name

Description

Schema

descId required

Business identifier of the channel

string

id required

Identifier of the channel

integer

inpAlignmentName required

Name of the input alignment, used for translating the incoming RDF data

string

inpAlignmentVers ion required

Version of the input alignment, used for translating the incoming RDF data

string

outAlignmentName required

Name of the output alignment, used for translating the outgoing RDF data

string

outAlignmentVers ion required

Version of the output alignment, used for translating the outgoing RDF data

string

sink

required

Identifier of the sink of the channel, i.e. Apache Kafka topic to which STE publishes translated RDF data

string

source required

Identifier representing the source of the channel, i.e. Apache Kafka topic from which STE reads the RDF data to be translated

string

### Error

Name

Schema

message required

string

### LoggingResponse

Name

Schema

level required

enum (ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF)

message required

string

### Response

Name

Description

Schema

message required

Descriptive response

string

### TranslationErrorResponse

Name

Description

Schema

graphStr required

Empty string Maximal length : 0

string

message required

Info on the failure of the translation

string

### TranslationRequest

Name

Description

Schema

alignIDs required

Sequence of alignment IDs to ba applied

< AlignmentID <definit ions.md#alignmentid> __ > array

graphStr required

JSON-LD message as a string

string

### TranslationResponse

Name

Description

Schema

graphStr required

Translated JSON-LD message as a string

string

message required

Info on the success of the translation

string

### VersionResponse

Name

Description

Schema

name required

Named of STE instance

string

version required

Version of STE instance

string

1.3.2.9. Developers guide REST API Paths

### Alignments

#### Upload new alignment

POST /alignments

1.3.2.9.1. Parameters

Type

Name

Description

Schema

Body

conf required

Alignment configuration

Alignment

1.3.2.9.2. Responses

HTTP Code

Description

Schema

201

Alignment uploaded successfully

Response

208

Alignment already uploaded

Response

400

Wrong arguments

Error

409

Alignment with the same ID but different definition exists

Error

1.3.2.9.3. Consumes

  • application/xml

1.3.2.9.4. Produces

  • application/json

#### List alignments

GET /alignments

1.3.2.9.5. Description

Lists alignments uploaded to the STE.

1.3.2.9.6. Responses

HTTP Code

Description

Schema

200

Available alignments info

< AlignmentInfo > array

#### Get an alignment identified by name+version

GET /alignments/{name}/{version}

1.3.2.9.7. Parameters

Type

Name

Description

Schema

Path

name required

Name of the alignment to be retrieved

string

Path

version required

Version of the alignment to be retrieved

string

1.3.2.9.8. Responses

HTTP Code

Description

Schema

200

Alignment successfuly returned

No Content

400

Alignment not found

Error

500

Alignment retrieval failed

Error

1.3.2.9.9. Consumes

  • application/json

1.3.2.9.10. Produces

  • application/xml

#### Delete alignment identified by name+version

DELETE /alignments/{name}/{version}

1.3.2.9.11. Parameters

Type

Name

Description

Schema

Path

name required

Name of the alignment to delete

string

Path

version required

Version of the alignment to delete

string

1.3.2.9.12. Responses

HTTP Code

Description

Schema

204

Alignment deleted

No Content

400

Alignment not found

Error

500

Alignment deletion failed

Error

#### Convert XML alignment into RDF/XML format

POST /convert

1.3.2.9.13. Parameters

Type

Name

Description

Schema

Body

conf required

Alignment source

string

1.3.2.9.14. Responses

HTTP Code

Description

Schema

201

Alignment converted successfully

string

500

Alignment conversion failed

Error

1.3.2.9.15. Consumes

  • application/xml

1.3.2.9.16. Produces

  • application/xml

#### Convert alignment cells to Turtle format

POST /convert/TTL

1.3.2.9.17. Parameters

Type

Name

Description

Schema

Body

conf required

Alignment source

string

1.3.2.9.18. Responses

HTTP Code

Description

Schema

201

Alignment cells converted successfully

string

500

Alignment cells conversion failed

Error

1.3.2.9.19. Consumes

  • application/xml

1.3.2.9.20. Produces

  • application/xml

### Channels

#### Create new channel

POST /channels

1.3.2.9.21. Parameters

Type

Name

Description

Schema

Body

conf required

Channel configuration

ChannelConfig

1.3.2.9.22. Responses

HTTP Code

Description

Schema

201

Channel created successfully

Response

400

Channel already exists or wrong arguments

Error

1.3.2.9.23. Consumes

  • application/json

1.3.2.9.24. Produces

  • application/json

#### List active STE channels

GET /channels

1.3.2.9.25. Description

The endpoint returns the list of all STE channels which are currently active.

1.3.2.9.26. Responses

HTTP Code

Description

Schema

200

Array of channel information records

< ChannelInfo > array

#### Delete channel based on the ID

DELETE /channels/{channelId}

1.3.2.9.27. Parameters

Type

Name

Description

Schema

Path

channelId required

ID of channel to delete

integer

1.3.2.9.28. Responses

HTTP Code

Description

Schema

204

Channel deleted

No Content

400

Channel not found

Error

500

Closing channel failed

Error

### Logging

#### Get the current STE logging level

GET /logging

1.3.2.9.29. Responses

HTTP Code

Description

Schema

200

Current logging level successfuly returned

LoggingResponse

1.3.2.9.30. Produces

  • application/json

#### Set logging level

POST /logging/{level}

1.3.2.9.31. Parameters

Type

Name

Description

Schema

Path

level required

Logging level

enum (all, trace, debug, info, warn, error, off)

1.3.2.9.32. Responses

HTTP Code

Description

Schema

200

Logging level set successfully

LoggingResponse

1.3.2.9.33. Produces

  • application/json

### Translation

#### Translate JSON-LD message via sequence of alignments

POST /translation

1.3.2.9.34. Parameters

Type

Name

Description

Schema

Body

data required

Translation request data

TranslationRequest

1.3.2.9.35. Responses

HTTP Code

Description

Schema

200

Translation successful

TranslationResponse

400

Error during translation

TranslationErrorResponse

1.3.2.9.36. Produces

  • application/json

### Version

#### Get this STE version info

GET /version

1.3.2.9.37. Responses

HTTP Code

Description

Schema

200

STE version info successfuly returned

VersionResponse

1.3.2.9.38. Produces

  • application/json

1.3.2.10. License

The Inter Platform Semantic Mediator is licensed under the Apache License, Version 2.0 (the “License”).

You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0

1.3.2.11. Notice dependencies

Dependency list and licensing information will be provided before the first major release of the STE.