The Experience Schema Service (XSS) maintains referential representations of domain entities, as well as transformational mappings that describe how to convert an entity from one particular schema representation to another.
This component responsible for managing pertinent object/record metadata schemas, and the mappings for transforming records from a source metadata schema to a target metadata schema. This component will also be used to store and link vocabularies from stored schema.
- Download and install Docker Desktop (docker compose included)
You can download Docker Compose binaries from the release page on this repository.
Rename the relevant binary for your OS to docker-compose and copy it to $HOME/.docker/cli-plugins
Or copy it into one of these folders to install it system-wide:
/usr/local/lib/docker/cli-pluginsOR/usr/local/libexec/docker/cli-plugins/usr/lib/docker/cli-pluginsOR/usr/libexec/docker/cli-plugins
(might require making the downloaded file executable with chmod +x)
Python >=3.9 : Download and install it from here Python.
Clone the Github repository
git clone https://github.com/OpenLXP/openlxp-xss.git
- Create a
.envfile in the root directory - The following environment variables are required:
| Environment Variable | Description |
|---|---|
| AWS_ACCESS_KEY_ID | The Access Key ID for AWS |
| AWS_SECRET_ACCESS_KEY | The Secret Access Key for AWS |
| AWS_DEFAULT_REGION | The region for AWS |
| DB_HOST | The host name, IP, or docker container name of the database |
| DB_NAME | The name to give the database |
| DB_PASSWORD | The password for the user to access the database |
| DB_ROOT_PASSWORD | The password for the root user to access the database, should be the same as DB_PASSWORD if using the root user |
| DB_USER | The name of the user to use when connecting to the database. When testing use root to allow the creation of a test database |
| DJANGO_SUPERUSER_EMAIL | The email of the superuser that will be created in the application |
| DJANGO_SUPERUSER_PASSWORD | The password of the superuser that will be created in the application |
| DJANGO_SUPERUSER_USERNAME | The username of the superuser that will be created in the application |
| LOG_PATH | The path to the log file to use |
| SECRET_KEY_VAL | The Secret Key for Django |
-
Create the OpenLXP docker network. Open a terminal and run the following command in the root directory of the project
docker network create openlxp -
Run the command below to deploy XSS along with it's resources
docker-compose up -d --build
-
Navigate over to
http://localhost:8000/admin/in your browser and login to the Django Admin page with the admin credentials set in your.env(DJANGO_SUPERUSER_EMAIL&DJANGO_SUPERUSER_PASSWORD) -
CORE
-
Schema Ledgers
-
Click on
Schema Ledgers>Add schema ledgers-
Enter the configurations below:
-
Schema Name: Schema file title -
Schema FileUpload the Schema file in the required format(JSON) -
StatusSelect if the Schema is Published or Retired -
Major versionAdd the Major value of the schema version -
Minor VersionAdd the Minor value of the schema version -
Patch VersionAdd the Patch version number of the schema
-
Note: On uploading the schema file in the required format to the schema ledger the creation of corresponding term set, linked child term set and terms process is triggered.
-
-
-
Transformation Ledger
-
Click on
Transformation Ledgers>Add transformation ledger-
Enter configurations below:
-
Source Schema: Select source term set file from drop-down -
Target Schema: Select Target term set from drop-down to be mapped to -
Schema Mapping File: Upload the Schema Mapping file to be referenced for mapping in the required format(JSON) -
Status: Select if the Schema Mapping is Published or Retired
-
Note: On uploading the Schema Mapping File in the required format to the transformation ledger, this triggers the process of adding the mapping for the corresponding term values.
-
-
-
Term sets: Term sets support the concept of a vocabulary in the context of semantic linking
- Click on
Term set>Add term set-
Enter configurations below:
-
IRITerm set's corresponding IRI -
NameTerm set title -
VersionAdd the version number -
StatusSelect if the Term set is Published or Retired
-
-
- Click on
-
Child Term sets: Is a term set that contains a references to other term-sets (schemas)
- Click on
Child term sets>Add child term set
-
Enter configurations below:
-
IRITerm set's corresponding IRI -
NameTerm set title -
StatusSelect if the Term set is Published or Retired -
Parent term setSelect the reference to the parent term set from the drop down
-
- Click on
-
Terms: A term entity can be seen as a word in our dictionary. This entity captures a unique word/term in a term-set or schema.
- Click on
Terms>Add term-
Enter configurations below:
-
IRITerm corresponding IRI -
NameTerm title -
DesciptionTerm entity's description -
StatusSelect if the Term set is Published or Retired -
Data TypeTerm entity's corresponding data type -
UseTerm entity's corresponding use case -
SourceTerm entity's corresponding source -
term setSelect the reference to the parent term set from the drop down -
MappingAdd mappings between terms entity's of different parent term set -
Updated byUser that creates/updates the term
-
-
- Click on
-
To destroy the created resources, simply run the command below in your terminal:
docker-compose down
XSS contains API endpoints which can be called from other components
Query string parameter: name version iri
http://localhost:8080/api/schemas/?parameter=parameter_value
Note:This API fetches the required schema from the repository using the Name and Version or IRI parameters
Query string parameter: sourceName sourceVersion sourceIRI targetName targetVersion targetIRI
http://localhost:8080/api/mappings/
Note: This API fetches the required mapping schema from the repository using the Source Name, Source Version, Target Name and Target Version or source IRI and Target IRI parameters
To run the automated tests on the application run the command below
Test coverage information will be stored in an htmlcov directory
docker-compose --env-file .env run app sh -c "coverage run manage.py test && coverage html && flake8"This project uses the MIT license.