Template information: Read and remove this page
Download
Report
Transcript Template information: Read and remove this page
Introduction to OSLC
Steve Speicher and Kartik Kanakasabesan
Objectives and Pre-requisites
Objectives:
You will gain an understanding of the OSLC community,
linked data, and the OSLC specification
Pre-requisites:
none
Highly recommended reading:
1. http://www.linkeddatatools.com/introducing-rdf
2. http://3roundstones.com/linked-data-101/linkeddata-tutorial/
2
What’s next
The OSLC community
Linked data and RDF
An example
The OSLC specification
3
Need open collaboration on solutions
Past collaborations have fallen short because of limited and
restrictive participation.
Limited to small set of business partners
No open process for others to join in
Limits solution to particular use
cases and technologies
Solution design goals and approach
No consensus driven approach
No external review
No visibility into solution
4
Point-to-point integrations
Built after the fact with limited
product APIs
Solution focuses on two tools in
hand
Restrictive licenses and intellectual property
License fees
Fear of giving up IP
Forces alternative solutions
Need better integration approaches
Past integration approaches have provided limited choice and coverage.
Past integration approaches have been disruptive and slow to emerge.
Single repository
Point-to-point integrations
“Can I really expect one vendor
to provide all the functionality I
need? And what about my
existing tools?”
“How can I ever upgrade one
tool without breaking
everything else?”
Universal metadata standard
Standard implementations
“How did I ever think all those
vendors would be able to
agree?”
“Did I really believe that
every vendor would rewrite
their tools on a single
framework?”
5
OSLC and Open Community – open collaboration, better integration
Identify
Scenarios
Call it a
specification
6
Iterate on
working
drafts
Gain technical
consensus,
collect nonassert
statements
OSLC community
Wide range of
interests,
expertise,
participation
Growing list of
implementations
from IBM and
others
Completed and
active
specifications for
many domains
7
Vendors, end users, industry consortia
40+ organizations have had employees participate in
specification development efforts
Collaborating on solutions for ALM, DevOps, ISM, PLM
Implementations from IBM Rational, Oracle, IBM Tivoli
and open source
3rd party adapters from IBM, Kovair, Tasktop, and open
source
Dozens of end users enabling homegrown tools
Change Management, Quality Management,
Requirements Management, Asset Management,
Architecture Management, Automation
Product Lifecycle Management, Configuration
Management
Performance Monitoring, Reconciliation
OSLC website at http://open-services.net
Register
8
Learn
Adopt
Browse
Participate
Some key OSLC milestones
Community Advances
W3C Linked Data Workgroup
Broaden the applicability of OSLC in the
area of Systems Management and Cloud
– Resource reconciliation WG
– Performance Monitoring WG
– and many more….
Technical advances
Eclipse Lyo 1.0 Delivery (see next slide)
Atlassian JIRA OSLC based plug-in made
available
Kovair announced OSLC interface on their
Omnibus solution
OSLC Java library OSLC4J made
available
OSLC based Tivoli Offerings
New Governance model
Lifecycle Integration Adapters (LIA)
available
9
LINKED DATA PLATFORM WORKING GROUP
-Linked Data Basic Profile
-IBM, DERI, EMC, Oracle, Red Hat,
SemanticWeb.com, Tasktop
-Supporters: Siemens, Cambridge
Semantics
-Over forty participants from over
twenty organizations
Eclipse Lyo 1.0 makes OSLC integrations easier
Eclipse Lyo 1.0 is an Eclipse project created with the goal of providing tools to enable adoption
of OSLC specifications.
Content includes
– Code libraries (Java, Perl, others under development)
– Give developers tools to ease OSLC implementations
– Reference implementations of specifications
– Provide a starting point for new integrations
– Test suites and test reporting. Covers OSLC Core, CM, QM, RM and Asset today.
– Accelerate and assess development
– Samples, tutorials and documentation
– Working samples of OSLC integrations with Bugzilla, Excel, Jazz tools and more.
Eclipse Lyo 1.0: http://www.eclipse.org/lyo/
Eclipse Lyo download: http://eclipse.org/lyo/download.php
Eclipse Lyo 1.0 podcast: http://open-services.net/resources/podcasts/
10
What’s next
The OSLC community
Linked data and RDF
An example
The OSLC specification
11
OSLC turns data into...
Requirements
Validation Tests
Design
Implementation
R1
D1
I1
R2
D2
I2
Tool C
Tool D
T1
T2
Tool A
12
Tool B
...connected information...
Requirements
Validation Tests
Design
Implementation
T1
validates
validates
R1
satisfy
satisfy
R2
D1
D2
implements
implements
I1
I2
validates
validates
T2
Tool A
Tool B
Does
Does
every
every
requirement
Does
every
requirement
have
requirement
a test to validate
have a it?
have
a
test
to
validate
test to validate it? it?
13
Tool C
Tool D
Which
requirements
for for
Which
requirements
thethe
UI are
related
to test
UI are
related
to
cases
that
failed
on
their
test cases that failed
laston
run?
their last run?
...that can facilitate applied knowledge
Requirements
Validation Tests
Design
Implementation
User Interface
T1
validates
validates
R1
satisfy
D1
implements
I1
Release
satisfy
R2
D2
T2
Tool B
Why is the number of
failed test cases for the UI
increasing in each
iteration?
14
I2
validates
validates
Tool A
implements
Processing Engine
Tool C
Tool D
How much faster is work
progressing on the UI
versus the Processing
Engine?
OSLC links lifecycle data
15
Linked Data and RDF
Tim Berners-Lee’s four principles for linking data:
Use URIs as names for things
Use HTTP URIs so that people can look up those names.
When someone looks up a URI, provide useful information
using the standards (RDF, SPARQL)
Include links to other URIs so that they can discover more
things.
“Instead of defining a new data model, OSLC’s resource
and property-value approach is based on industry
standard Resource Description Framework (RDF) data
model.”
Adapted from: http://open-services.net/bin/view/Main/ OslcCoreSpecification
16
RDF Concepts
OSLC applies some RDF key concepts:
1. Graph data model
2. URI-based vocabulary
3. Format - Serialization syntaxes (RDF/XML,
Turtle, JSON)
4. Datatypes
5. Literals
6. Expression of simple facts
7. Entailment
We’ll briefly look at some of them.
17
1. OSLC uses an RDF graph data model
Subject
Amanda
Test Case 1
Predicate
owns
validates
Object
Car
Requirement 1
The predicate provides the property or relationship
between the subject and object.
Adapted from:
http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-data-model
18
2. OSLC uses a URI-based vocabulary
When there is a need to identify anything in OSLC,
use a URI (there are a few exceptions).
Using URIs allows everything to be linked together. It
also allows common agreed-upon meaning for
relationships and for resource types
<http://...Test Case 1>
<http://...validates> <http://...Requirement 1>
OSLC Core URI Naming Guidance:
http://open-services.net/wiki/core/OSLC-Core-URI-Naming-Guidance/
19
3. OSLC allows different RDF format
The RDF model provides for describing RDF triples.
There are various supported formats. Some are
specialized for RDF (Turtle) and others are derived
from existing formats (XML, JSON). These formats can
be exchanged between different applications (tools).
OSLC allows different types of format:
RDF/XML
Turtle
JSON
OSLC Core Specification:
http://open-services.net/bin/view/Main/OslcCoreSpecification
20
Examples of different OSLC notations
Subject
<http://...Test Case 1>
Predicate
<http://...validates>
Object
<http://...Requirement 1>
<http://example.com/TestCases/1> a oslc_qm:TestCase ;
Turtle
oslc_qm:validatesRequirement <http://example.com/Requirements/1>
{
"rdf:about": "http:\/\/example.com\/TestCases\/1",
"rdf:type": [ {
"rdf:resource": "http:\/\/open-services.net\/ns\/qm#TestPlan"
} ],
JSON
"oslc_qm:validatesRequirement": {
"rdf:resource": "http:\/\/example.com\/Requirements\/1"
}
}
<oslc_qm:TestCase rdf:about="http://example.com/TestCases/1">
<oslc_qm:validatesRequirement rdf:resource="http://example.com/Requirements/1"/>
</oslc_qm:TestCase>
21
RDF/XML
What’s next
The OSLC community
Linked data and RDF
An example
The OSLC specification
This example is adapted from
http://3roundstones.com/linked-data-101/linked-datatutorial/ [David Wood, 3RoundStonesInc. November2011]
22
Here’s a fictional project
Existing product: Lunar
Rover 3.0
New Release: Lunar
Rover 3.1
Main goal is to improve
remote steering
Release to orbit date:
September 20, 2014
23
Let’s look at the requirements domain
Requirement 28465 Improve Remote
Steering
owner
priority
Bob
release
Lunar Rover 3.1
High
owned by
Iris
created on
November 24,
2011
release to
orbit date
state
24
Implemented
September 20,
2014
The same information as before, as a graph
25
Requirement
Owner
Priority
Created on
State
Release
Requirement
28464 Add rear
FIDO mast
Linda
Low
October 18, 2012
New
Lunar Rover
3.1
Requirement
28465 Improve
Remote Steering
Bob
High
November 24, 2011
Implemented
Lunar Rover
3.1
Requirement
28466 Rebuild
wheels for soil
excavation
Tanuj
Medium
September 9, 2012
Reviewed
Lunar Rover
3.1
Rover Release
Owned by
Release to orbit date
Lunar Rover 3.0
Cheng
August 16, 2011
Lunar Rover 3.1
Iris
Sept 14, 2014
Let’s look at the quality domain
Test Case 35645: Test Steering
owner
priority
Janet
release
Lunar Rover 3.1
High
owner
created on
state
result
26
December 7,
2011
Executed
pass
release to
orbit date
Iris
September 20,
2014
Let’s add more relationships
validated by
Test Case 35645: Test
Steering
release
Requirement 28465
Improve Remote Steering
owner
owner
priority
release
Bob
Lunar Rover
3.1
High
owner
priority
created on
Iris
Janet
High
December
7, 2011
created on
November 24,
2011
state
27
Implemented
release to
orbit date
state
September
20, 2014
result
Executed
pass
The same information as before, as a graph
Requirement
Owner
Priority
Created
on
State
Release
Validated by
Requirement
28464 Add rear
FIDO mast
Linda
Low
October 18,
2012
New
Lunar
Rover 3.1
Requirement
28465 Improve
Remote Steering
Bob
High
November
24, 2011
Implemented
Lunar
Rover 3.1
Test Case
35645: Test
Steering
Requirement
28466 Rebuild
wheels for soil
excavation
Tanuj
Medium
September
9, 2012
Reviewed
Lunar
Rover 3.1
Lunar Rover
3.1
Rover
Release
Owner
Release to orbit
date
Test Case
Owner
Priority
...
Lunar
Rover 3.0
Cheng
August 16, 2011
Test Case 35645
Test Steering
Janet
High
...
Lunar
Rover 3.1
Iris
Sept 14, 2014
Lunar Rover 3.1
Iris
28
...
OSLC triple (subject-predicate-object)
Triple
Subject = Resource
= always a URI
Requirement
28465 Improve
Remote Steering
Predicate =
Relationship or
property = Always a
URI
validated by
priority
29
Object = Could be a
URI (which could refer
to a resource) or a
literal value (value to
work with and show
users)
Test Case
35645: Test
Steering
High
OSLC triple (subject-predicate-object)
Triple
Subject = Resource
= always a URI
Predicate =
Relationship or
property = Always a
URI
<http://...require
ment28465_
improve_remote
steering>
<http://...validatedby>
<http://...priority>
30
Object = Could be a
URI (which could refer
to a resource) or a
literal value (value to
work with and show
users)
<http://...testcas
e35645_test_ste
ering>
“High”
Let’s add more relationships
Work Item
38759
validated by
implements
release
Requirement 28465
Improve Remote
Steering
owner
Test Case 35645: Test
Steering
owner
Janet
release
Bob
Lunar Rover
3.1
priority
High
priority
High
owner
created on
Decemb
7, 201
Iris
created on
November
24, 2011
state
31
Implemented
release to
orbit date
state
Execut
September
20, 2014
result
pass
There is a web of URIs around a development effort
<http://.../build>
<http://.../testresult
>
<http://.../change
request>
<http://.../build>
<http://.../test
case>
<http://.../req>
<http://.../build>
<http://.../testresult
>
<http://.../workitem
>
<http://.../test
case>
<http://.../bug>
<http://.../workitem
>
<http://.../bug>
<http://.../test
case>
<http://.../change
request>
<http://.../req>
<http://.../build>
<http://.../workitem
>
<http://.../req>
<http://.../release>
<http://.../build>
<http://.../bug>
validate
<http://.../build>
<http://.../workitem
>
<http://.../req>
<http://.../change
request>
<http://.../workitem
>
<http://.../test
case>
<http://.../req>
<http://.../testresult
>
<http://.../test
case>
<http://.../change
request>
<http://.../testresult
>
<http://.../change
request>
32
<http://.../build>
<http://.../change
request>
<http://.../testresult
>
OSLC principles
Tim Berners-Lee’s four principles applied to OSLC:
Use URIs as names for things
– In OSLC, each artifact in the lifecycle (for example, requirements,
change requests, test cases...) is identified by a URI.
Use HTTP URIs so that people can look up those names.
– In OSLC, each artifact in the lifecycle is an HTTP resource.
Standard HTTP methods (GET, PUT, POST, DELETE) are used to
interact with them.
When someone looks up a URI, provide useful information using the
standards (RDF*, SPARQL)
– Each OSLC resource has an RDF representation. RDF/XML is
mandatory and other representations such as JSON or HTML are
common.
Include links to other URIs so that they can discover more things.
– OSLC lifecycle artifacts are linked by relationships (for example,
validatesRequirement or testedByTestCase) which are defined by
URIs.
33
What’s next
The OSLC community
Linked data and RDF
An example
The OSLC specification
34
Anatomy of a specification
OSLC Core Specification
OSLC Change Mgt
Specification
OSLC Requirements
Specification
OSLC Domain X
Specification
Core: Specifies the primary integration
techniques for integrating lifecycle tools –
the standard rules and patterns for using
HTTP and RDF that all the domain
workgroups must adopt in their
specifications
Domain: Defines integration scenarios for
a given lifecycle topic and specifies a
common vocabulary for the lifecycle
artifacts needed to support the scenarios.
Example: The Core specification
describes Delegated UIs and Creation
Factories and states that OSLC service
providers MAY provide them. The
Change Management specification states
that CM service providers MUST provide
them.
http://open-services.net/bin/view/Main/OslcCoreSpecification
35
OSLC defines the following technical areas:
Discovery of
capabilities
UI Previews for
Resource Links
Delegated UI for
Create and Select
36
HTTP C.R.U.D. for
resources
Standard resource
representations
Querying for
resources
First, some terminology
OSLC Service
Provider catalog
provides
OSLC Service
Provider
provides an
implementation of
OSLC Service
These catalogs are used in the discovery of
OSLC service providers. They help to simplify
the configuration of tools that will integrate
with providers of OSLC-defined services.
example: IBM Rational Team
Concert
A product or online service offering that
provides an implementation of one or more
OSLC Services, which may themselves
implement different OSLC Domain
specifications
Set of capabilities that enable a web client to
create, retrieve, update and delete resources
managed by an ALM or PLM product or
online service offering and associated with
one OSLC Domain
manages
OSLC Resource
37
Managed by an OSLC Service, may have
properties and may link to other resources
including those provided by other OSLC
Services.
example: IBM Rational Team
Concert project area
example: Change Management
capability
example: work item (bug,
defect, enhancement request)
1. Discovery of capabilities
Starting from the catalog you
can discover services and their
capabilities. This is a common
pattern in OSLC.
OSLC capabilities:
Delegated UI Dialog allows you to
create or find resources using a UI
provided by the OSLC tool
Creation Factory allows you to
create resources programmatically
Query Capability allows you to
query for resources
38
2. HTTP C.R.U.D
OSLC allows manipulation of resources using standard
HTTP C.R.U.D
Create = POST
Request = GET
Update = PUT
Delete = DELETE
39
Resource creation
Create a resource using HTTP POST, with the resource body in format
of choice
URI for doing the POST is defined in the oslc:ServiceProvider in
the oslc:creationFactory service
Response is a 201-Created with Location HTTP header indicating
URI for resource
Request may be rejected for any number of reasons
Insufficient permissions
Missing required values
Invalid data choices
...and … and ...
Valid resource formats for creation are defined by:
domain specifications
service provider may define its own resources and formats
optionally, by resource shape associated with creation factory
40
Resource retrieval
Use HTTP GET and standard HTTP content negotiation
Client uses HTTP Accept request header to specify desired resource formats
Accept: application/json, application/xml
Use standard content(MIME) types
Partial representations can be requested via HTTP URL key=value pair as
?oslc.properties=
Allows for minimal retrieval of properties
Get Defect 123 (all properties)
GET http://bugs/123
Get Defect 123 (just title and status)
GET http://bugs/123?oslc.properties=dcterms:title,oslc_cm:status
41
Resource modification
Use HTTP GET to get resource properties to be updated
You’ll get an ETag back
Change only the property values you need to change
Clients must preserve unknown content
Use HTTP PUT to send updated resource
Use If-Match HTTP request header with ETag, services may reject
your request without it
HTTP PUT will completely replace the resource representation
We are moving towards PATCH – new HTTP verb
http://tools.ietf.org/html/rfc5789
It is possible to update only selected properties
42
Resource linking
Links are properties where the property values are
URIs
Turtle format for a bug resource (abbreviated)
<http://example.com/bugs/2314>
a oslc_cm:ChangeRequest ;
dcterms:relation
<http://server/app/bugs/1235> ;
Don't make assumptions about the target of links
OSLC supports an open model
Needed to achieve goal of “loosely coupled” integrations
Clients need to be flexible and expect anything
Sometimes we need to provide additional data about
links: label, owners, and so on.
Special cases where links need more representation
43
3. Resource representations
OSLC services should handle any type of resource
Not just those defined by OSLC
Resources defined by OSLC use RDF data model
therefore are simply defined by their set of properties
OSLC services MUST produce and consume RDF/XML
representations
Clients and services MUST NOT assume any subset of RDF/XML
Other representations are allowed such as:
XML: OSLC defined format that allows for consistent formats and
is RDF/XML valid
JSON: Rules for representing namespaces and QName properties
Turtle: No constraints, use as is
Atom Syndication Format: <atom:content> SHOULD be RDF/XML
44
4. Querying for resources
Query capability has base URI
Clients form query URI and HTTP GET the results
OSLC services MAY support OSLC Query Syntax
http://open-services.net/bin/view/Main/OSLCCoreSpecQuery
45
Query syntax overview
Filter results by appending “oslc.where=”
with query clause to query base URI
Only boolean operation allowed is “and”
which represents conjunction
“or” for disjunction is not defined in the
interests of keeping the syntax simple.
Retrieve just what you want with
“oslc.select=”
Defined ordering using “oslc.orderBy=”
Full-text search via “oslc.searchTerms=”
46
'in' operator:
Test for equality to any of the
values in a list. The list is a
comma-separated sequence
of values, enclosed in square
brackets: in [“high”,”critical”]
Comparison Operators
= test for equality
!= test for inequality
< test less-than
> test greater-than
<= test less-than or equal
>= test greater-than or
equal
Query syntax example
Find high severity bugs created after April fools day
http://example.com/bugs?oslc.where=
cm:severity="high" and dcterms:created>"2010-04-01"
Find bugs related to test case 31459
http://example.com/bugs?oslc.prefix=qm=<http://qm.example.com/ns
oslc.where=qm:testcase=<http://example.com/tests/31459>
Find all bugs created by John Smith
http://example.com/bugs?oslc.where=
dcterms:creator{foaf:givenName="John" and foaf:familyName="Sm
47
5. Delegated UI renders the source app UI in the target app
A delegated UI renders the source
application UI in the target application. This
example shows the contributed/delegated
Rational Team Concert Work Item search
dialog being rendered in an OSLC Quality
Management application.
2. iframe's src
set to delegated
UI's URL
1. Click to
launch
delegated UI
4. Click OK.
Sends message
(link+label) to
parent window
48
3. Selection
made
Delegated UI key points
Delegated UIs support both creation and selection of resources
Two communication protocols are supported for iframes:
HTML5 postMessage() ← preferred method
– Supported in most modern browers
Window object's window.name
– Supported in older browsers and Eclipse embedded web widget
Consumer selects which protocol to use, informs provider via fragment
identifier
Tremendous value for resource creation
Traditionally most service logic was communicated to client and new
dialog built
Now the rules for creation and dialog change as needed
Prefilling of creation dialog done by “creating” a dialog resource
HTTP POST of resource format to creation dialog URL, response is URL
of dialog prefilled
49
6. UI Preview
Scenario supported: hover over link to get in context preview of resource
Simple resource format defined and retrieved using HTTP content
negotiation
Hover over link
50
OSLC specification also includes:
Common property and resource definitions covering
Resource shapes
Resource typical properties: title, description, identification, …
Leveraging Dublin Core and FOAF
Discussion/comments
OSLC services MAY offer OAuth 1.0a
Three legged OAuth for webapp to webapp authentication
Two legged OAuth for client to webapp authentication
OSLC services MAY offer HTTP BASIC Auth
User name and password sent “in the clear” with Base64 encoding
Should be done via HTTPS only
51
Resources
OSLC Web Site
http://open-services.net
OSLC Primer
http://open-services.net/primer
OSLC Tutorial
http://open-services.net/tutorial
Eclipse Lyo 1.0
http://www.eclipse.org/lyo/
Steve Speicher’s blog
http://stevespeicher.blogspot.com/
OSLC Core and Domain specifications
http://open-services.net/specifications/
52
Thank you.
Please email comments, questions and feedback about
this presentation to [email protected]
53