IPSM API API Reference

Inter Platform Semantic Mediator API

Request Content-Types: application/json
Response Content-Types: application/json
Schemes: http
Version: 1.0.0

Alignments

List alignments

GET /alignments

Lists alignments uploaded to the IPSM.

200 OK

Available alignments info

Response Example (200 OK)
[
  {
    "descId": "string",
    "id": "integer",
    "date": "integer",
    "name": "string",
    "sourceOntologyURI": "string",
    "targetOntologyURI": "string",
    "version": "string",
    "creator": "string",
    "description": "string"
  }
]

Upload new alignment

POST /alignments

Alignment configuration

Request Content-Types: application/xml
Request Example
{
  "name": "string",
  "version": "string",
  "creator": "string",
  "description": "string",
  "onto1": {
    "Ontology": {
      "about": "string"
    }
  },
  "onto2": {
    "Ontology": {
      "about": "string"
    }
  },
  "steps": {
    "step": {
      "cell": "string",
      "order": "integer"
    }
  },
  "map": {
    "Cell": {
      "entity1": {},
      "entity2": {},
      "relation": "string"
    }
  }
}
201 Created

Alignment uploaded successfully

208 Already Reported

Alignment already uploaded

400 Bad Request

Wrong arguments

409 Conflict

Alignment with the same ID but different definition exists

Response Content-Types: application/json
Response Example (201 Created)
{
  "message": "string"
}
Response Example (208 Already Reported)
{
  "message": "string"
}
Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (409 Conflict)
{
  "message": "string"
}

Delete alignment identified by name+version

DELETE /alignments/{name}/{version}
name: string
in path

Name of the alignment to delete

version: string
in path

Version of the alignment to delete

204 No Content

Alignment deleted

400 Bad Request

Alignment not found

500 Internal Server Error

Alignment deletion failed

Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "message": "string"
}

Get an alignment identified by name+version

GET /alignments/{name}/{version}
name: string
in path

Name of the alignment to be retrieved

version: string
in path

Version of the alignment to be retrieved

200 OK

Alignment successfuly returned

400 Bad Request

Alignment not found

500 Internal Server Error

Alignment retrieval failed

Response Content-Types: application/xml
Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "message": "string"
}

Channels

List active IPSM channels

GET /channels

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

200 OK

Array of channel information records

Response Example (200 OK)
[
  {
    "id": "integer",
    "descId": "string",
    "source": "string",
    "inpAlignmentName": "string",
    "inpAlignmentVersion": "string",
    "outAlignmentName": "string",
    "outAlignmentVersion": "string",
    "sink": "string"
  }
]

Create new channel

POST /channels

Channel configuration

Request Content-Types: application/json
Request Example
{
  "source": "string",
  "inpAlignmentName": "string",
  "inpAlignmentVersion": "string",
  "outAlignmentName": "string",
  "outAlignmentVersion": "string",
  "sink": "string",
  "parallelism": "integer"
}
201 Created

Channel created successfully

400 Bad Request

Channel already exists or wrong arguments

Response Content-Types: application/json
Response Example (201 Created)
{
  "message": "string"
}
Response Example (400 Bad Request)
{
  "message": "string"
}

Delete channel based on the ID

DELETE /channels/{channelId}
channelId: integer
in path

ID of channel to delete

204 No Content

Channel deleted

400 Bad Request

Channel not found

500 Internal Server Error

Closing channel failed

Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "message": "string"
}

Translation

Translate JSON-LD message via sequence of alignments

POST /translation

Translation request data

Request Example
{
  "alignIDs": [
    {
      "name": "string",
      "version": "string"
    }
  ],
  "graphStr": "string"
}

Translation successful

400 Bad Request

Error during translation

Response Content-Types: application/json
Response Example (200 OK)
{
  "message": "string",
  "graphStr": "string"
}
Response Example (400 Bad Request)
{
  "message": "string",
  "graphStr": "string"
}

Logging

Get the current IPSM logging level

GET /logging

Current logging level successfuly returned

Response Content-Types: application/json
Response Example (200 OK)
{
  "message": "string",
  "level": "string"
}

Set logging level

POST /logging/{level}
level: string all, trace, debug, info, warn, error, off
in path

Logging level

Logging level set successfully

Response Content-Types: application/json
Response Example (200 OK)
{
  "message": "string",
  "level": "string"
}

Schema Definitions

ChannelInfo: object

id: integer

Identifier of the channel

descId: string

Business identifier of the channel

source: string

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

inpAlignmentName: string

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

inpAlignmentVersion: string

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

outAlignmentName: string

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

outAlignmentVersion: string

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

sink: string

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

Example
{
  "id": "integer",
  "descId": "string",
  "source": "string",
  "inpAlignmentName": "string",
  "inpAlignmentVersion": "string",
  "outAlignmentName": "string",
  "outAlignmentVersion": "string",
  "sink": "string"
}

ChannelConfig: object

source: string

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

inpAlignmentName: string

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

inpAlignmentVersion: string

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

outAlignmentName: string

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

outAlignmentVersion: string

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

sink: string

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

parallelism: integer 1

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

Example
{
  "source": "string",
  "inpAlignmentName": "string",
  "inpAlignmentVersion": "string",
  "outAlignmentName": "string",
  "outAlignmentVersion": "string",
  "sink": "string",
  "parallelism": "integer"
}

Alignment: object

name: string

Alignment name

version: string

Alignment version

creator: string

Alignment creator

description: string

Alignment description

onto1: object

onto1

Ontology: object

Contains the URI identifying the ontology

about: string

URI identifying the ontology

onto2: object

onto2

Ontology: object

Contains the URI identifying the ontology

about: string

URI identifying the ontology

steps: object

Steps

step: object

Alignment step

cell: string

Alignment cell ID

order: integer

Order of cell application

map: object

map

Cell: object

Cell

entity1: object

The first aligned ontology entity

entity2: object

The second aligned ontology entity

relation: string

Relation

Example
{
  "name": "string",
  "version": "string",
  "creator": "string",
  "description": "string",
  "onto1": {
    "Ontology": {
      "about": "string"
    }
  },
  "onto2": {
    "Ontology": {
      "about": "string"
    }
  },
  "steps": {
    "step": {
      "cell": "string",
      "order": "integer"
    }
  },
  "map": {
    "Cell": {
      "entity1": {},
      "entity2": {},
      "relation": "string"
    }
  }
}

AlignmentInfo: object

descId: string

Business identifier

id: integer

Technical identifier

date: integer

UNIX timestamp of upload to IPSM

name: string

Name of the alignment

sourceOntologyURI: string

URI of the source ontology for alignment

targetOntologyURI: string

URI of the target ontology for alignment

version: string

Alignment version

creator: string

Alignment creator

description: string

Alignment description

Example
{
  "descId": "string",
  "id": "integer",
  "date": "integer",
  "name": "string",
  "sourceOntologyURI": "string",
  "targetOntologyURI": "string",
  "version": "string",
  "creator": "string",
  "description": "string"
}

Error: object

message: string
Example
{
  "message": "string"
}

Response: object

message: string
Example
{
  "message": "string"
}

LoggingResponse: object

message: string
level: string ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF
Example
{
  "message": "string",
  "level": "string"
}

AlignmentID: object

name: string

Alignment name

version: string

Alignment version

Example
{
  "name": "string",
  "version": "string"
}

TranslationRequest: object

alignIDs: AlignmentID

Sequence of alignment IDs to ba applied

AlignmentID
graphStr: string

JSON-LD message as a string

Example
{
  "alignIDs": [
    {
      "name": "string",
      "version": "string"
    }
  ],
  "graphStr": "string"
}

TranslationResponse: object

message: string

Info on the success of the translation

graphStr: string

Translated JSON-LD message as a string

Example
{
  "message": "string",
  "graphStr": "string"
}

TranslationErrorResponse: object

message: string

Info on the failure of the translation

graphStr: string

Empty string

Example
{
  "message": "string",
  "graphStr": "string"
}