A web service for transforming JSON objects using term mapping rules.
This service provides a REST API for transforming JSON objects according to mapping rules defined in a YAML configuration file. The mappings can be applied in both directions (A to B or B to A) and support foundry and layer overrides.
go get github.com/KorAP/KoralPipe-TermMapper2
termmapper -c config.yaml -p 8080 -l info
Command line options:
--config
or -c
: YAML configuration file containing mapping directives (required)--port
or -p
: Port to listen on (default: 8080)--log-level
or -l
: Log level (debug, info, warn, error) (default: info)--help
or -h
: Show help messageThe configuration file should be in YAML format and contain a list of mapping definitions:
- id: opennlp-mapper foundryA: opennlp layerA: p foundryB: upos layerB: p mappings: - "[PIDAT] <> [opennlp/p=PIDAT & opennlp/p=AdjType:Pdt]" - "[DET] <> [opennlp/p=DET]" - id: simple-mapper mappings: - "[A] <> [B]"
Each mapping list has:
id
: Unique identifier for the mapping listfoundryA
, layerA
: Default foundry and layer for the left side of mappingsfoundryB
, layerB
: Default foundry and layer for the right side of mappingsmappings
: List of mapping rules in the format [pattern] <> [replacement]
POST /:map/query
Transform a JSON object using the specified mapping list.
Parameters:
:map
: ID of the mapping list to usedir
(query): Direction of transformation (atob
or btoa
, default: atob
)foundryA
(query): Override default foundryA from mapping listfoundryB
(query): Override default foundryB from mapping listlayerA
(query): Override default layerA from mapping listlayerB
(query): Override default layerB from mapping listRequest body: JSON object to transform
Example request:
POST /opennlp-mapper/query?dir=atob&foundryB=custom HTTP/1.1 Content-Type: application/json { "@type": "koral:token", "wrap": { "@type": "koral:term", "foundry": "opennlp", "key": "PIDAT", "layer": "p", "match": "match:eq" } }
Example response:
{ "@type": "koral:token", "wrap": { "@type": "koral:termGroup", "operands": [ { "@type": "koral:term", "foundry": "custom", "key": "PIDAT", "layer": "p", "match": "match:eq" }, { "@type": "koral:term", "foundry": "custom", "key": "AdjType", "layer": "p", "match": "match:eq", "value": "Pdt" } ], "relation": "relation:and" } }
GET /health
Returns "OK" if the service is running.
go test ./...
go build -o termmapper ./cmd/termmapper