Home

Awesome

X3ML Engine


Table of Contents


Introduction

The X3ML engine handles the URI generation and the data transformation steps of the data provision and aggregation process. It realizes the transformation of the source records to the target's format. The engine takes as input the source data (currently in the form of an XML document), the description of the mappings in the X3ML mapping definition file and the URI generation policy file and is responsible for transforming the XML document into a valid RDF document which is equivalent with the XML input, with respect to the given mappings and policy. The engine has been originally implemented in the context of the CultureBrokers project co-funded by the Swedish Arts Council and the British Museum.

X3ML Language

The X3ML mapping definition language is an XML based language which describes schema mappings in such a way that they can be collaboratively created and discussed by experts. The X3ML language was designed on the basis of work that started in FORTH in 2006 and emphasizes on establishing a standardized mapping description which lends itself to collaboration and the building of a mapping memory to accumulate knowledge and experience. It was adapted primarily to be more according to the DRY principle (avoiding repetition) and to be more explicit in its contract with the URI Generating process. X3ML separates schema mapping from the concern of generating proper URIs so that different expertise can be applied to these two very different responsibilities.

Development

This project is a straightforward Maven 3 project, producing a single artifact in the form of a JAR file which contains the engine software. The artifact will be used in a variety of different contexts, so the main focus of this project is to create exhaustively tested transformation engine. Examples of input and expected output have been prepared by the participating organizations.

Project Structure

The project is structured with respect to Maven principles and any important or useful resources are categorized to different folders. More specifically it contains the following folders:

Design Principles

Download

Official Releases

We regularly publish new releases of the X3ML engine. Each release contains the following:

More specifically we publish both official releases and releases under development.

Maven Releases

In addition, we publish X3ML Engine releases in a Maven repository so that they can be used from other JAVA developers. To use X3ML Engine simply use the repository shown below, as well as the dependency for the version you are looking for.

<repositories>
	<repository>
		<id>FORTH-ISL-releases</id>
		<name>FORTH ISL Nexus repository - Releases</name>		
		<url>http://athena.ics.forth.gr:8081/repository/FORTH-ISL-releases/</url>
        </repository>
</repositories>

<dependencies>
	<dependency>
		<groupId>gr.forth.ics.isl</groupId>
		<artifactId>x3ml-engine</artifactId>
		<version>1.9.1</version>
	</dependency>
</dependencies>

Maven SNAPSHOTs

Furthermore, we publish the releases under development (SNAPSHOTs) in a Maven repository. They are published every time new changes are pushed to master branch. To use a SNAPSHOT version of X3ML Engine, use the repository shown below, as well as the dependency for the SNAPSHOT version you are looking for.

<repositories>
	<repository>
		<id>FORTH-ISL-snapshots</id>
		<name>FORTH ISL Nexus repository - Snapshots</name>		
		<url>http://athena.ics.forth.gr:8081/repository/FORTH-ISL-snapshots/</url>
        </repository>
</repositories>

<dependencies>
	<dependency>
		<groupId>gr.forth.ics.isl</groupId>
		<artifactId>x3ml-engine</artifactId>
		<version>1.9.2-SNAPSHOT</version>
	</dependency>
</dependencies>

License

X3ML Engine is released under Apache License 2.0. It is A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code. You can find more detailed about the license in the corresponding LICENSE file and at https://www.apache.org/licenses/LICENSE-2.0.html.

How to Execute

X3ML Engine can be used either programmatically or directly from console.

Run from console

To run the x3ml engine from the console you need to download the x3ml engine executable .jar and execute it according to the following instructions:

A simple example looks like:

java -jar x3ml.jar -i input.xml -x mappings.x3ml -p generator-policy.xml -o output.rdf -u 4

Run through JAVA API

X3ML Engine can created and executed programmatically using the X3MLEngineFactory class. A basic usage of the factory class is shown below.

X3MLEngineFactory.create()
 		 .withInputFiles(new File("input.xml")) 
		 .withMappings(new File("mappings.x3ml"))
		 .withGeneratorPolicy(new File("generator-policy.xml"))
		 .withOutput(new File("output.rdf"), X3MLEngineFactory.OutputFormat.RDF_XML)
		 .execute();

Below we provide an explanation of the methods of the X3MLEngineFactory. Detailed documentation is available for developers in the form of Javadoc comments.

Run using GUI application

X3ML Engine can be executed using a simple GUI application. The following figure shows an indicative snapshot of the application. The GUI application can be downloaded from https://github.com/ymark/X3MLEngine-gui/releases/.

Relevant Publications


Contacts


Last update: May 29, 2019