Jump to: navigation, search

Difference between revisions of "Lyo"

(Tutorials and Documentation: link reorder)
Line 1: Line 1:
= Welcome to the Eclipse Lyo Wiki. =
+
Eclipse Lyo promotes the use of Linked Data principles and the [http://docs.oasis-open.org/oslc-core/oslc-core/v3.0/oslc-core-v3.0-part1-overview.html OSLC] (Open Services for Lifecycle Collaboration) standard for publishing lifecycle data, to enable the interoperability of heterogeneous products, services, and other distributed network resources. The open OASIS OSLC standard is based on a RESTful architecture and Linked Data principles, such as those defined in the RDF family of specifications, and the [https://www.w3.org/TR/ldp/ W3C Linked Data Platform].
  
See [http://eclipse.org/lyo/ Eclipse Lyo homepage] for more information on the Eclipse Lyo project.  
+
Eclipse Lyo supports Java developers with the development of REST-based servers and clients that need to share heterogeneous information as [https://www.w3.org/TR/rdf11-primer/ RDF resources].
  
See [http://open-services.net the OSLC homepage] for more information on Open Services for Lifecycle Collaboration.
+
<!-- ## CONTENTS -->
 +
<!-- TOC depthFrom:2 updateOnSave:false -->
 +
<!-- - [What is OSLC?](#what-is-oslc)
 +
- [OSLC4J SDK](#oslc4j-sdk)
 +
- [Lyo Designer](#lyo-designer)
 +
- [Tutorials and Documentation](#tutorials-and-documentation)
 +
  - [Installation](#installation)
 +
  - [Basic Topics](#basic-topics)
 +
  - [Example OSLC Servers](#example-oslc-servers)
 +
- [Additional components](#additional-components)
 +
- [Advanced topics](#advanced-topics)
 +
- [Contributing to Lyo](#contributing-to-lyo)
 +
- [Project Plans](#project-plans) -->
 +
<!-- /TOC -->
 +
<!-- --- -->
 +
= What is OSLC? =
  
== Tutorials and Documentation ==
+
For an introduction to the OASIS OSLC standard:
  
'''Start with these:'''
+
* [http://open-services.net/resources/tutorials/integrating-products-with-oslc/ Integrating products with OSLC] - A tutorial that explains how to implement OSLC Servers and Clients, with lots of examples and working code.
 +
* [http://open-services.net/linked-data-and-oslc-tutorial-2015-update/ Linked Data and OSLC Tutorial] - A video introducing Linked Data and OSLC.
 +
* [http://open-services.net/resources/presentations/introduction-to-oslc-slideshow/ Introduction to OSLC and Linked Data] - A slides presentation introducing OSLC.
  
* [[Lyo/creating_OSLC4J_project | How to create an OSLC4J project]]
+
= OSLC4J SDK =
* [[Lyo/ToolchainModellingAndCodeGenerationWorkshop | Toolchain Designer workshop on Modelling and Code Generation]]
+
  
'''Advanced topics:'''
+
Lyo’s central component is the OSLC4J SDK (Software Development Kit) that helps build REST-based servers and clients, compliant with the OSLC standard.
  
* [[Lyo/TRSWorkshop | OSLC Tracked Resource Set (TRS) Workshop and documentation]]
+
The library provides:
* [[Lyo/Store | Lyo Store library for ORM-like work with OSLC resources in the triplestore]]
+
* [[Lyo/modelling_and_generation/working_from_source_code | Working with Toolchain Designer from source code]]
+
  
'''Introduction to OSLC:'''
+
* Annotations that automate the marshaling/unmarshaling of Java objects to/from Linked Data RDF resources ([https://jena.apache.org/ Apache Jena] model).
 +
* Annotations that allow servers to publish their RESTful API capabilities, based on the [http://docs.oasis-open.org/oslc-core/oslc-core/v3.0/cs01/part2-discovery/oslc-core-v3.0-cs01-part2-discovery.html OSLC Discovery] approach. This in turn facilitates for clients to discover and use available capabilities.
 +
* JAX-RS Providers and utility classes to facilitate the development of REST operations for accessing, creating, updating and deleting RDF resources.
  
* [http://open-services.net/resources/tutorials/integrating-products-with-oslc/ Integrating products with OSLC (introductory OSLC workshop with code and documentation)]
+
= Lyo Designer =
* [http://open-services.net/linked-data-and-oslc-tutorial-2015-update/ Linked Data and OSLC Tutorial (newer, with youtube video)]
+
* [http://open-services.net/resources/presentations/introduction-to-oslc-slideshow/ Introduction to OSLC and Linked Data]
+
  
== Installation ==
+
Lyo Designer is an Eclipse plugin that allows one to graphically model (1) the overall system architecture, (2) the information model of the RDF resources being shared, and (3) the individual services and operations of each Server in the system. The figure below shows the information modelling interface:
  
* [[Lyo/General_Setup_for_OSLC4J_Development | General Setup for OSLC4J development]]
+
[[File:static/LyoToolchainModel-SpecificationDiagram.png|frame|none]]
* [[Lyo/modelling_and_generation/installation|Modelling and Generation Installation]]
+
* [[Lyo/modelling_and_generation/working_from_source_code#Eclipse_Setup_when_working_with_source_code | Eclipse Setup when working with source code]]
+
  
== Lyo project structure overview ==
+
Lyo Designer includes a integrated code generator that synthesizes the toolchain model into almost-complete OSLC4J-compliant running implementation. The resulting code includes:
* [[Lyo/LyoOSLC4J|OSLC4J:]] A Java SDK for OSLC providers and consumers.
+
* [[Lyo/LyoRIO | The '''*old*''' Lyo Reference Implementations for OSLC (RIOs)]]
+
* [[Lyo/LyoTestSuite | Lyo OSLC Test Suite]]
+
* [[Lyo/LyoPerl | Lyo OSLC Perl library and samples]]
+
* [[Lyo/TRSSDK | OSLC Tracked Resource Specification SDK]]
+
* [[Lyo/Simulink| OSLC Simulink adapter implementation]]
+
* [[Lyo/MagicDraw| OSLC MagicDraw adapter implementation]]
+
* [[Lyo/Oslc4Js|(Experimental) OSLC Node.js module]]
+
  
== Building and running the OSLC4J code ==
+
* Java classes with appropriate OSLC4J-annotations to reflect the modelled resources, and hence facilitate the marshaling/unmarshaling of Java instances as Linked Data RDF resources.
* [[Lyo/BuildingOSLC4J | Building and running OSLC4J applications (including RIOs that leverage OSLC4J)]]
+
* JAX-RS Service operations for accessing, updating, creating and deleting RDF resources.
* [[Lyo/BuildRIO | Building and running the '''*old*''' reference implementations (RIOs)]]
+
** These operations handle any of the supported formats (turtle, RDF/XML, Json, etc.)
* [[Lyo/BuildTestSuite| Building and running the OSLC test suite]]
+
** For debugging purposes, jsp pages are also produced to deliver HTML representations of all RDF resources.
* [[Lyo/BuildOSLC4JBugzilla | Building and running the OSLC Bugzilla sample]]
+
* JAX-RS Service operations to completely handle [http://docs.oasis-open.org/oslc-core/oslc-core/v3.0/cs01/part4-delegated-dialogs/oslc-core-v3.0-cs01-part4-delegated-dialogs.html Delegated UI] for both creation and selection dialogs.
* [[Lyo/SharepointAdapter | Building and running the OSLC SharePoint sample]]
+
** Including the initial generation of basic jsp pages for the html-representation of the dialogs.
* [[Lyo/BuildClient | Building and running the OSLC client]]
+
* JAX-RS Service operations to handle [http://docs.oasis-open.org/oslc-core/oslc-core/v3.0/cs01/part3-resource-preview/oslc-core-v3.0-cs01-part3-resource-preview.html Resource Preview]
* [[Lyo/BuildLDPSample | Building and running the LDP reference implementation]]
+
** Including the initial generation of basic jsp pages for the html-representation of the resource previews.
* [[Lyo/JenkinsPlugin | Building and running the Hudson and Jenkins sample OSLC Automation provider]]
+
 
 +
Lyo Designer supports incremental development, where manual changes to the generated code are preserved upon changes to the model, and subsequent code regeneration.
 +
 
 +
= Tutorials and Documentation =
 +
 
 +
== Installation ==
 +
 
 +
* How to [https://wiki.eclipse.org/Lyo/General_Setup_for_OSLC4J_Development setup the Eclipse environment] for Lyo development
 +
* How to [https://wiki.eclipse.org/Lyo/creating_OSLC4J_project create an initial REST server application], ready for Lyo-based development
 +
* How to [https://wiki.eclipse.org/Lyo/modelling_and_generation/installation install Lyo Designer]
 +
 
 +
== Basic Topics ==
 +
 
 +
* How to [https://wiki.eclipse.org/Lyo/ToolchainModellingAndCodeGenerationWorkshop use Lyo Designer] to model a toolchain and generate an initial code base
 +
* How to implement an [https://wiki.eclipse.org/Lyo/TRSWorkshop Tracked Resource Set (TRS)] OSLC server
 +
 
 +
== Example OSLC Servers ==
 +
 
 +
Lyo also includes instructions and source code for a range of OSLC Server implementations:
 +
 
 +
* [https://wiki.eclipse.org/Lyo/BuildOSLC4JBugzilla Bugzilla] - an example of what Eclipse Lyo can be used for, in the form of an OSLC-CM compatible adapter for the Bugzilla bugtracker application. It wraps Bugzilla (interacting with it through Bugzilla's native XMLRPC API) with an OSLC-CM provider server accessible through REST calls.
 +
* [https://wiki.eclipse.org/Lyo/BuildClient Sample OSLC client] - that demonstrates how to use the Lyo client to interact with OSLC Service Providers in various ways.
 +
* [https://wiki.eclipse.org/Lyo/SharepointAdapter SharePoint] - This SharePoint adapter looks through the sharepoint OData collections for collections where the ContentType is defined as &quot;Document&quot;. For each SharePoint library that contains documents, an OSLC service provider is created with the basic services for OSLC Delegated dialogs for selection and creation as well as listing the documents with a UI preview.
 +
* The [https://wiki.eclipse.org/Lyo/JenkinsPlugin Hudson and Jenkins] adapor implements the OSLC Automation specification.
 +
* [https://wiki.eclipse.org/Lyo/Simulink Simulink]
 +
* [https://wiki.eclipse.org/Lyo/MagicDraw MagicDraw]
 +
* The [https://wiki.eclipse.org/Lyo/BuildLDPSample Lyo LDP reference implementation] - is a sample Java implementation of the W3C Linked Data Platform 1.0 Candidate Recommendation using JAX-RS (Apache CXF) and Jena TDB.
 +
 
 +
= Additional components =
 +
 
 +
Additional components of the Lyo project include:
 +
 
 +
'''OSLC Client''' provides helpful APIs to interact with OSLC Servers. It provides an additional layer of functionality on top of Apache HttpClient, Apache Wink, and OSLC4J that can give you a head start on some of the common use cases such as form login, OAuth handling, service discovery, sending queries, and processing query results. Io order to use it, include the following dependency from the Eclipse Maven repositories:
 +
 
 +
<source lang="xml"><dependency>
 +
    <groupId>org.eclipse.lyo.clients</groupId>
 +
    <artifactId>oslc-java-client</artifactId>
 +
    <version>2.2.0</version>
 +
</dependency></source>
 +
Find more information in the [https://download.eclipse.org/lyo/docs/client/2.2.0/overview-summary.html Javadocs].
 +
 
 +
Other components:
 +
 
 +
* [https://wiki.eclipse.org/Lyo/TRSSDK OSLC Tracked Resource Specification (TRS) SDK] - provides a simple set of java beans that represent the entities within the TRS specification. &gt; TODO current TRS libs live under the Lyo core.
 +
* [https://wiki.eclipse.org/Lyo/Store Lyo Store] - a library that provides a simple interface for working with a triplestore via Java objects representing OSLC Resources.
 +
* [https://wiki.eclipse.org/Lyo/LyoTestSuite Test Suite] - provides a suite of tests which will test OSLC domain provider implementations against the specification.
 +
* [https://wiki.eclipse.org/Lyo/BuildingOSLC4J Reference Implementations] - See how OSLC works directly with working samples and with a simple server to test against. &gt; TODO is it a typo?
 +
* [[Lyo/LyoRIO|''Reference Implementations (OUTDATED)'']] - a simple, bare-bones reference implementation of the OSLC specifications. RIOs are intended to help those who are adopting OSLC by providing a functioning system that can be explored via a simple UI and REST services, or by taking a look at the source code.
 +
* [https://wiki.eclipse.org/Lyo/LyoPerl Lyo OSLC Perl library and samples]
 +
* [https://wiki.eclipse.org/Lyo/Oslc4Js ''OSLC4JS Javascript OSLC library (experimental)''].
 +
** [http://oslc.github.io/developing-oslc-applications/oslc-open-source-node-projects.html OSLC4JS architecture]
 +
** [https://wiki.eclipse.org/DevelopingOslc4Js Development with OSLC4JS]
 +
 
 +
= Advanced topics =
 +
 
 +
* [https://wiki.eclipse.org/Lyo/modelling_and_generation/working_from_source_code Working with Lyo Designer from source code]
 +
** [https://wiki.eclipse.org/Lyo/modelling_and_generation/working_from_source_code#Eclipse_Setup_when_working_with_source_code Eclipse Setup when working with source code]
 +
* [https://wiki.eclipse.org/Lyo/BuildingOSLC4J Building and using OSLC4J from source code] (Including running sample code and reference implementations)
 +
* [https://wiki.eclipse.org/Lyo/BuildClient Building and using Lyo Client from source code] (Including running sample code)
 +
* [https://wiki.eclipse.org/Lyo/BuildRIO Building and running the '''*old*''' reference implementations (RIOs)]
 +
* [https://wiki.eclipse.org/Lyo/BuildTestSuite Building and running the OSLC test suite]
 +
 
 +
= Contributing to Lyo =
  
== Contributing to Lyo ==
 
 
* Introduce yourself on the [mailto:lyo-dev@eclipse.org Lyo development mailing list]
 
* Introduce yourself on the [mailto:lyo-dev@eclipse.org Lyo development mailing list]
 
* Open a new [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Lyo Lyo Bugzilla ticket] (you may check [https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;product=Lyo existing open tickets first])
 
* Open a new [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Lyo Lyo Bugzilla ticket] (you may check [https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;product=Lyo existing open tickets first])
* To contribute code, see the [[Lyo/ContributorsGettingStarted | Lyo Contributor's Guide]] and [[Lyo/GitTips | Tips for Working with Git]].
+
* To contribute code, see the [https://wiki.eclipse.org/Lyo/ContributorsGettingStarted Lyo Contributor's Guide] and [https://wiki.eclipse.org/Lyo/GitTips Tips for Working with Git].
* [[Lyo/ReleaseReviews|Eclipse Lyo Release Process]]
+
* [https://wiki.eclipse.org/Lyo/ReleaseReviews Eclipse Lyo Release Process]
 +
 
 +
= Project Plans =
 +
 
 +
[https://wiki.eclipse.org/Lyo/ProjectPlans Lyo project plan for Lyo 1.0-2.1.2]
 +
 
 +
After 2.1 there was a plan for immediate Lyo 3 release, but it was not picked up eagerly enough. Right now the new roadmap continues to make 2.x releases.
  
== Project Plans ==
+
[https://docs.google.com/document/d/e/2PACX-1vSglX92r6OvjHvQZDpq8fxarTkYGsdBCjX23HOOfkMHYb9g_qPO5x-q1DCTkAJbeHsFVOqCYfyIVN-M/pub Lyo 2.3+ roadmap] (updated on 2017-07-29).
[[Lyo/ProjectPlans|See the current Lyo project plans]]
+

Revision as of 18:36, 14 December 2017

Eclipse Lyo promotes the use of Linked Data principles and the OSLC (Open Services for Lifecycle Collaboration) standard for publishing lifecycle data, to enable the interoperability of heterogeneous products, services, and other distributed network resources. The open OASIS OSLC standard is based on a RESTful architecture and Linked Data principles, such as those defined in the RDF family of specifications, and the W3C Linked Data Platform.

Eclipse Lyo supports Java developers with the development of REST-based servers and clients that need to share heterogeneous information as RDF resources.

What is OSLC?

For an introduction to the OASIS OSLC standard:

OSLC4J SDK

Lyo’s central component is the OSLC4J SDK (Software Development Kit) that helps build REST-based servers and clients, compliant with the OSLC standard.

The library provides:

  • Annotations that automate the marshaling/unmarshaling of Java objects to/from Linked Data RDF resources (Apache Jena model).
  • Annotations that allow servers to publish their RESTful API capabilities, based on the OSLC Discovery approach. This in turn facilitates for clients to discover and use available capabilities.
  • JAX-RS Providers and utility classes to facilitate the development of REST operations for accessing, creating, updating and deleting RDF resources.

Lyo Designer

Lyo Designer is an Eclipse plugin that allows one to graphically model (1) the overall system architecture, (2) the information model of the RDF resources being shared, and (3) the individual services and operations of each Server in the system. The figure below shows the information modelling interface:

Lyo Designer includes a integrated code generator that synthesizes the toolchain model into almost-complete OSLC4J-compliant running implementation. The resulting code includes:

  • Java classes with appropriate OSLC4J-annotations to reflect the modelled resources, and hence facilitate the marshaling/unmarshaling of Java instances as Linked Data RDF resources.
  • JAX-RS Service operations for accessing, updating, creating and deleting RDF resources.
    • These operations handle any of the supported formats (turtle, RDF/XML, Json, etc.)
    • For debugging purposes, jsp pages are also produced to deliver HTML representations of all RDF resources.
  • JAX-RS Service operations to completely handle Delegated UI for both creation and selection dialogs.
    • Including the initial generation of basic jsp pages for the html-representation of the dialogs.
  • JAX-RS Service operations to handle Resource Preview
    • Including the initial generation of basic jsp pages for the html-representation of the resource previews.

Lyo Designer supports incremental development, where manual changes to the generated code are preserved upon changes to the model, and subsequent code regeneration.

Tutorials and Documentation

Installation

Basic Topics

Example OSLC Servers

Lyo also includes instructions and source code for a range of OSLC Server implementations:

  • Bugzilla - an example of what Eclipse Lyo can be used for, in the form of an OSLC-CM compatible adapter for the Bugzilla bugtracker application. It wraps Bugzilla (interacting with it through Bugzilla's native XMLRPC API) with an OSLC-CM provider server accessible through REST calls.
  • Sample OSLC client - that demonstrates how to use the Lyo client to interact with OSLC Service Providers in various ways.
  • SharePoint - This SharePoint adapter looks through the sharepoint OData collections for collections where the ContentType is defined as "Document". For each SharePoint library that contains documents, an OSLC service provider is created with the basic services for OSLC Delegated dialogs for selection and creation as well as listing the documents with a UI preview.
  • The Hudson and Jenkins adapor implements the OSLC Automation specification.
  • Simulink
  • MagicDraw
  • The Lyo LDP reference implementation - is a sample Java implementation of the W3C Linked Data Platform 1.0 Candidate Recommendation using JAX-RS (Apache CXF) and Jena TDB.

Additional components

Additional components of the Lyo project include:

OSLC Client provides helpful APIs to interact with OSLC Servers. It provides an additional layer of functionality on top of Apache HttpClient, Apache Wink, and OSLC4J that can give you a head start on some of the common use cases such as form login, OAuth handling, service discovery, sending queries, and processing query results. Io order to use it, include the following dependency from the Eclipse Maven repositories:

<dependency>
    <groupId>org.eclipse.lyo.clients</groupId>
    <artifactId>oslc-java-client</artifactId>
    <version>2.2.0</version>
</dependency>

Find more information in the Javadocs.

Other components:

Advanced topics

Contributing to Lyo

Project Plans

Lyo project plan for Lyo 1.0-2.1.2

After 2.1 there was a plan for immediate Lyo 3 release, but it was not picked up eagerly enough. Right now the new roadmap continues to make 2.x releases.

Lyo 2.3+ roadmap (updated on 2017-07-29).