-
Notifications
You must be signed in to change notification settings - Fork 1
New Component Integration
The integration of new components in the generator depends on the interfaces offered by the component:
- REST-based APIs. The most straight forward integration consisting of a stand alone component application that provides services. For integrating a REST-based application, it is required to develop a GUI within the Workbench.
- Web applications. The component provides all its functionality within an application and has it own user interface. Some communication between the component and the integration application has to be defined, and the user experience is compromised because users have to deal with different interfaces.
- Libraries. If the component is available as a library (e.g. jar), a component interface is required, and in some cases adaptation of communication and data processing is also necessary.
In any case, in order to integrate components it is required some front-end development with https://angularjs.org/. AngularJS is a JavaScript framework that provides a MVC architecture. The Workbench has several services, and some directives that can be used by de controllers and the HTML templates.
For adding a new component in the workbench follow next steps:
-
Describe the component to the configuration file: The components are described using a vocabulary developed within the Linked Data Stack team. The Linked Data Integration Schema, provides the vocabulary to describe the services offered by a component, its version, the required data for using it (i.e. user, password, working directories, etc). And a classification within the Linked Data Lifecycle. Thus, the developer has to add into the system-components.ttl the description of the service of the new component to integrate. Therein, the developer can see the different descriptions of existing components and can use one of those as an example. As an example, we would like to add a component that do Name Entity Extraction. Then, we add a the following description:
:NERTool a lds:StackComponent ; rdfs:label "My NER tool"^^xsd:string ; lds:providesService :NERToolService ; foaf:homepage <http://my-ner-tool.example.org> ; dcterms:hasVersion "1.0"^^xsd:string . :NERToolService a lds:EnrichmentService ; rdfs:label "NER Tool" ; lds:serviceUrl <http://localhost:8080/ner-tool/api/> .
-
Add the Routes to the GUI. To enable the restriction access to the component a Rotue Restriction has to be added to the
system-configuration.ttl
.:NERToolRestriction a ontos:RouteRestriction; ontos:route "/workbench/classification-and-enrichment/ner-tool"^^xsd:string; ontos:requiresService :NERToolService .
-
If applicable, Create a Service. If the application to be added has a REST interface, creating a service to interact with it may be very convenient. If a service file is created, the service has to be also declared in the angular environment in the
src/main/webapp/js/app.js
file, and as well added into thesrc/main/webapp/index.html
. -
Create the HTML template and Controller. The GUIs for each integrated component are under the /src/main/webapp/js/workbench directory. The developer may add a HTML template and its controller in the directory his component fits better. For instance the above described NERTool may go in
src/main/webapp/js/workbench/classification-and-enrichment
. The Controller may use the ComponentService in order to extract the information about the component.:NERToolRestriction a ontos:RouteRestriction; ontos:route "/workbench/classification-and-enrichment/ner-tool"^^xsd:string; ontos:requiresService :NERToolService .
-
Add the route in the angular app.
-
Deploy the new configuration files.
-
Activate the component
#Home
- Dashboard
- Import RDF
- Sparqlify
- TripleGeo-Sercvice
- Virtuoso SPARQL Endpoint
- Mapify
- Facete
- OntoWiki
- LIMES
- FAGI-gis
- DEER
- Public-Private Data Coevolution