More Related Content Similar to JavaOne2013 Leveraging Linked Data and OSLC (20) JavaOne2013 Leveraging Linked Data and OSLC1. Leveraging W3C Linked Data Platform for
Loosely Coupled Application Integrations
JavaOne 2013 Session CON2492
Steve Speicher
Linked Lifecycle Data and OSLC
Chief Architect
IBM Rational
@sspeiche
sspeiche@gmail.com
© 2013 IBM Corporation
3. Software Development Tools : Year 2000 - point products
Software
Configuration
Management
Test automation
& management
Build automation &
management
Work-item & defect
tracking
Requirements
management
User complaints
–Need tools to work better
–Need tools to work together
© 2013 IBM Corporation
4. Year 2005 – ALM V1
Software
Configuration
Management
Test automation
& management
Build automation
& management
Work-item & defect
tracking
Requirements
management
ALM Solution
• Developer complaints
– Clumsy integrations
– Want best-of-breed choice
• Management complaints
– Need governance, metrics,
reports, …
• Mixed Tool Environments
– Open-source offerings with DIY
integration
– 3rd party ALM suites
© 2013 IBM Corporation
5. Year 2010 – Linked Data and OSLC – A major breakthrough
Software
Configuration
Management
Build automation
& management
Requirements
management
Test automation
& management
Work-item & defect
tracking
Learned to integrate with open protocols instead of glue
@ http://open-services.net
© 2013 IBM Corporation
6. Cloud Application Management pain points
Managing the lifecycle of cloud applications is complex:
- Different tools to manage the cloud applications at the different lifecycle stages
(i.e. development, governance, instantiation, defect tracking, etc.)
- Different APIs provided by these tools
- Different overlapping resource models
- …
Simplify the way cloud applications are managed:
- development of cloud application templates
- governance of templates
- publishing templates to cloud managers
- instantiation of templates
- management of created instances
© 2013 IBM Corporation
7. Healthcare – Adverse Event Reporting Landscape
Regulatory
Agency
Local
Office Systems
Drug
Producer
For each of these 3, need:
• Custom protocol
• Custom format
• Custom schema
• Custom security
© 2013 IBM Corporation
9. Linked Data – Defined by Tim Berners-Lee
1. Use URIs as names for things
2. Use HTTP URIs so that people can look up those names.
3. When someone looks up a URI, provide useful
information, using the standards (RDF*, SPARQL)
Got links?
4. Include links to other URIs. so that they
can discover more things.
Simple.
© 2013 IBM Corporation
10. Linked Data – What is it?
TestCase 14 is blocked by Issue 973
http://srv/qm/tc/14
qm:blockedBy
http://apache.org/jira/HTTPCLIENT-973
Joe is a committer for Apache
http://joecoder.me
doap:committer
http://apache.org
Issue 973 depends on Bug 318
http://apache.org/jira/HTTPCLIENT-973
cm:dependsOn
http://bugs.sun.com/? id=7172318
Issue 973 is owned by Joe
http://apache.org/jira/HTTPCLIENT-973
dc:contributor
http://joecoder.me
© 2013 IBM Corporation
11. Linked Data – What is it? Show me a picture
TestCase
14
Joe
Issue
973
Apache
Bug
318
© 2013 IBM Corporation
12. Linked Data – Bridging separate data sources (but with meaning)
Source: http://lod-cloud.net Sept 2011
© 2013 IBM Corporation
13. OSLC – Based on Linked Data
Lifecycle Tool
<http://cm/bugs/2314>
Common Resource Definitions
a oslc_cm:ChangeRequest ;
Change
dcterms:relation <http://cm/bugs/1235>;
Management
oslc_cm:implementsRequirement <http://rm/req/56> .
Service Management
Help Desk
<http://rm/req/56>
a oslc_rm:Requirement ;
Lifecycle Tool
dcterms:title “Online shopping cart”;
Requirements
oslc_rm:validatedBy <http://qm/tc/17> .
Management
Lifecycle Tool
Quality Management
Delegated Dialogs
Service Management
Deployment
Link Preview
http://open-services.net
© 2013 IBM Corporation
15. Linked Data – state of the art
Has some limitations:
– Focused on exposing data with relationships
– No support for update and creation of granular data
– Data updates achieved by receiving new dataset dumps
– Often an export transformation and dump of data
– Based on best practices -- don’t all align and based on specialized usage
Provides great value for many cases
Limited interoperability:
– Interoperable solutions are limited due to no agreement on best practices
– Applications support least common denominator or hacks
© 2013 IBM Corporation
16. Evolution of W3C Linked Data
W3C Linked Data
Four design principles proposed by Tim Berners-Lee in a 2006 article
Standardization will accelerate industry adoption and enhance interop
IBM Sponsored W3C Workshop on Linked Enterprise Data Patterns (Dec 2011)
– Participating organizations included EMC, Elsevier, IBM, Nokia, Oracle
– Workshop recommended W3C produce a standard “which defines a Linked Data
Platform”, leveraging RDF
IBM Submitted Linked Data Basic Profile 1.0 proposal to W3C (March 2012)
– Base the Linked Data Platform foundation on OSLC Core technology and experience
– Co-submitters:
– Supporters:
© 2013 IBM Corporation
17. W3C Linked Data Platform (LDP) Working Group
Workgroup membership spans 49 participants from 30 organizations
Participants: IBM, Oracle, Fujitsu, EMC, BBC, DERI, Cambridge Semantics, …
Define a W3C Standard of “Linked Data”
– Based on Tim Berners-Lee four principles of Linked Data
– HTTP-based (RESTful) application integration patterns using read/write Linked
Data
– Will complement SPARQL and will be compatible with standards for publishing
Linked Data, bringing the data integration features of RDF to RESTful, dataoriented software development.
On target to deliver a W3C Candidate Recommendation by early 2014
Details @ http://www.w3.org/2012/ldp
© 2013 IBM Corporation
18. W3C Linked Data Platform (LDP)
CAUTION: Specification is still under construction.
© 2013 IBM Corporation
19. Linked Data Platform - Resource
What resource formats should be used?
What literal value types should be used?
Are there some typical vocabularies that should be reused?
How is optimistic collision detection handled for updates?
What should client expectations be for changes to linked-to
resources, such as type changes?
What can servers do to ease the burden of constraints for resource
creation?
© 2013 IBM Corporation
20. Request
LDP Resource – GET a simple example
GET /container1/member1 HTTP/1.1
Host: example.org
Accept: text/turtle
Response
Removed HTTP headers to save some space
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix ldp: <http://w3.org/ns/ldp#>.
container1
member
1
member2
member3
http://example.org
<http://example.org/container1/member1>
a o:Cash;
dcterms:title “ACME Bank savings account”;
o:value 45.00.
© 2013 IBM Corporation
21. Linked Data Platform - Container
To which URLs can I POST to create new resources?
Where can I GET a list of existing resources?
How is the order of the container entries expressed?
How do I get information about the members along with the
container?
How do I GET the entries of a large container broken up into pages?
How can I ensure the resource data is easy to query?
© 2013 IBM Corporation
22. Request
ldp:Container – GET a simple example
GET /container1/ HTTP/1.1
Host: example.org
Accept: text/turtle
container1
member1
Removed HTTP headers to save some space
@prefix dcterms: <http://purl.org/dc/terms/>.
member2
member3
Response
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix ldp: <http://w3c.org/ns/ldp#>.
http://example.org
<http://example.org/container1/>
a ldp:Container;
dcterms:title "A very simple container";
rdfs:member <member1>, <member2>, <member3>.
© 2013 IBM Corporation
23. Request
ldp:Container – create resource and add
POST /container1/ HTTP/1.1
Host: example.org
Content-type: text/turtle
Content-length: 324
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix o: <http://example.org/ontology/>.
<>
Response
a o:Stock;
dcterms:title “ACME Co.”;
o:value 100.00.
container1
member1
member2
member3
+member4
http://example.org
HTTP/1.1 201 CREATED
Location: http://example.org/container1/member4
© 2013 IBM Corporation
24. Request
ldp:Container – get updated
GET /container1/ HTTP/1.1
Host: example.org
Accept: text/turtle
container1
member1
Removed HTTP headers to save some space
@prefix dcterms: <http://purl.org/dc/terms/>.
Response
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix ldp: <http://w3c.org/ns/ldp#>.
member2
member3
member4
http://example.org
<http://example.org/container1/>
a ldp:Container;
dcterms:title "A very simple container";
rdfs:member <member1>, <member2>, <member3>, <member4>.
© 2013 IBM Corporation
25. ldp:Container – Net worth example
Disclaimer: picture only in UML, does not follow UML constraints
© 2013 IBM Corporation
26. ldp:Container – slightly more complex example
# The following is the representation of
#
http://example.org/netWorth/nw1
@prefix o: <http://example.org/ontology/>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix ldp: <http://w3c.org/ns/ldp#>.
<http://example.org/netWorth/nw1>
a o:NetWorth;
o:asset
<http://example.org/netWorth/nw1/assetContainer/a1>,
<http://example.org/netWorth/nw1/assetContainer/a2>.
<http://example.org/netWorth/nw1/assetContainer/>
a ldp:Container;
dcterms:title "The assets of JohnZSmith";
ldp:membershipSubject <http://example.org/netWorth/nw1>;
ldp:membershipPredicate o:asset.
•
Membership predicate is something other than rdfs:member (o:asset)
•
Subject for members is something other than the container
© 2013 IBM Corporation
27. ldp:Container – Member Information
# chopped @prefix
<http://example.org/netWorth/nw1>
a o:NetWorth;
o:asset
<http://example.org/netWorth/nw1/assetContainer/a1>,
<http://example.org/netWorth/nw1/assetContainer/a2>.
<http://example.org/netWorth/nw1/assetContainer/>
a ldp:Container;
dcterms:title "The assets of JohnZSmith";
ldp:membershipSubject <http://example.org/netWorth/nw1>;
ldp:membershipPredicate o:asset.
<http://example.org/netWorth/nw1/assetContainer/a1>
a o:Stock;
o:value 10000.
<http://example.org/netWorth/nw1/assetContainer/a2>
a o:Bond;
o:value 20000.
•
Statements about the member resources included with container representation response
© 2013 IBM Corporation
28. Request
ldp:Container – Only data about it, no members
GET /netWorth/nw1?non-member-properties HTTP/1.1
Host: example.org
Accept: text/turtle; charset=utf-8
Removed HTTP headers to save some space
Response
@prefix o: <http://example.org/ontology/>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix ldp: <http://w3c.org/ns/ldp#>.
<http://example.org/netWorth/nw1>
a o:NetWorth.
# Members omitted
<http://example.org/netWorth/nw1/assetContainer/>
a ldp:Container;
dcterms:title "The assets of JohnZSmith";
ldp:membershipSubject <http://example.org/netWorth/nw1>;
ldp:membershipPredicate o:asset.
© 2013 IBM Corporation
29. ldp:Container – Paging (first page)
# Request-URI: http://example.org/netWorth/nw1?firstPage
<http://example.org/netWorth/nw1>
a o:NetWorth;
o:asset
<http://example.org/netWorth/nw1/assetContainer/a1>,
<http://example.org/netWorth/nw1/assetContainer/a2>.
<http://example.org/netWorth/nw1/assetContainer/>
a ldp:Container;
dcterms:title "The assets of JohnZSmith";
bp:membershipSubject <http://example.org/netWorth/nw1>;
bp:membershipPredicate o:asset.
<http://example.org/netWorth/nw1/assetContainer/?firstPage>
a ldp:Page;
ldp:pageOf
<http://example.org/netWorth/nw1/assetContainer/>;
ldp:nextPage <http://example.org/netWorth/nw1/assetContainer/?p=2>.
<http://example.org/netWorth/nw1/assetContainer/a1>
a o:Stock;
o:value 100.00.
<http://example.org/netWorth/nw1/assetContainer/a2>
a o:Cash;
o:value 50.00.
•
New ldp:Page resource
•
Members of containers are paged
© 2013 IBM Corporation
30. ldpContainer – Paging (last page)
# Request-URI: http://example.org/netWorth/nw1/assetContainer/?p=2
# omitted @prefix
<http://example.org/netWorth/nw1>
a o:NetWorth;
o:asset
<http://example.org/netWorth/nw1/assetContainer/a3>.
<http://example.org/netWorth/nw1/assetContainer/>
a bp:Container;
dcterms:title "The assets of JohnZSmith";
bp:membershipSubject <http://example.org/netWorth/nw1>;
bp:membershipPredicate o:asset.
<http://example.org/netWorth/nw1/assetContainer/?p=2>
a ldp:Page;
ldp:pageOf <http://example.org/netWorth/nw1/assetContainer/>;
ldp:nextPage rdf:nil.
<http://example.org/netWorth/nw1/assetContainer/a5>
a o:Stock;
dcterms:title "Big Co.";
o:value 200.02.
•
Last page indicated by ldp:nextPage set to rdf:nil
© 2013 IBM Corporation
31. ldp:Container – Paging (ordering)
# Request-URI: http://example.org/netWorth/nw1/assetContainer/?firstPage
# omitted @prefix
<http://example.org/netWorth/nw1>
a o:NetWorth;
o:asset
<http://example.org/netWorth/nw1/assetContainer/a1>,
<http://example.org/netWorth/nw1/assetContainer/a2>.
<http://example.org/netWorth/nw1/assetContainer/>
a ldp:Container;
dcterms:title "The assets of JohnZSmith";
ldp:membershipSubject <http://example.org/netWorth/nw1>;
ldp:membershipPredicate o:asset.
<http://example.org/netWorth/nw1/assetContainer/?firstPage>
a ldp:Page;
ldp:pageOf <http://example.org/netWorth/nw1/assetContainer/>;
ldp:containerSortPredicates (o:value).
<http://example.org/netWorth/nw1/assetContainer/a1>
a o:Stock;
o:value 100.00.
<http://example.org/netWorth/nw1/assetContainer/a2>
a o:Cash;
o:value 50.00.
•
Order indicated by ldp:containerSortPredicate
•
No ordinal predicate introduced, leverage domain model
© 2013 IBM Corporation
33. Open Source Linked Data projects
Simple yet solid framework for building RESTful Web
services based on JAX-RS
RDF Java API and Fuseki provides REST-style
SPARQL HTTP interface
Easily develop semantic web apps by providing tools to
manipulate RDF data, create RESTful Web Services
Extend traditional content management systems with
semantic services
SDK and supporting tools to help the community to
adopt OSLC specifications and build compliant tools
© 2013 IBM Corporation
34. Handling Linked Data requests - GET
@GET
@Path("{crId}")
@Produces({“application/rdf+xml”, “application/xml”, “application/json”})
public ChangeRequest getChangeRequest(@Context final HttpServletResponse httpServletResponse,
@PathParam(”crId") final String crId)
{ final ChangeRequest cr = Persistence.getChangeRequest(crId);
if (cr != null) {
cr.setServiceProvider(ServiceProviderSingleton.getServiceProviderURI());
setETagHeader(getETagFromChangeRequest(cr), httpServletResponse);
return cr; }
throw new WebApplicationException(Status.NOT_FOUND);
}
© 2013 IBM Corporation
35. Handling Linked Data requests – HTTP POST
@OslcCreationFactory ( resourceTypes = {“http://open-services.net/ns/cm#ChangeRequest”} )
@POST
@Consumes({“application/rdf+xml”, “application/xml”, “application/json”})
@Produces({“application/rdf+xml”, “application/xml”, “application/json”})
public Response addChangeRequest(@Context final HttpServletRequest httpServletRequest,
@Context final HttpServletResponse httpServletResponse,
final ChangeRequest
changeRequest)
throws URISyntaxException
{
// ... create magic happens here ...
return Response.created(about).entity(changeRequest).build();
}
© 2013 IBM Corporation
36. Annotating Classes for RDF
@OslcNamespace(“http://open-services.net/ns/cm#”)
@OslcResourceShape(describes = “http://open-services.net/ns/cm#ChangeRequest”)
public final class ChangeRequest extends AbstractResource
{ private String status;
private String title;
@OslcPropertyDefinition("http://open-services.net/ns/cm#status")
public String getStatus() { return status; }
@OslcPropertyDefinition("http://purl.org/dc/terms/#title")
public String getTitle() { return title; }
}
© 2013 IBM Corporation
37. Wrapping up
Linked Data space is actively evolving and maturing
Loosely-coupled application integrations have benefited
Good alignment with REST applications
Further standardization will help the cause
Stay tuned for W3C Linked Data Platform
© 2013 IBM Corporation
40. Open Services for Lifecycle Collaboration (OSLC)
Working to improve the way software lifecycle tools share data
Open Services for Lifecycle Collaboration
Lifecycle integration inspired by the web
Community driven and governed
400+ registered community members
Workgroup members from 34+ organizations
Wide range of interests, expertise, & participation
Open specifications for numerous disciplines
Defined by scenarios – solution oriented
Implementations from IBM, BPs, and Others
Based on
Inspired by the web
Proven
Automation
Monitoring
Linked Data
Free to use and share Changing the industry
Open
Innovative
@ http://open-services.net
© 2013 IBM Corporation
Editor's Notes Reference: “Linked Data”, Tim Berners-Lee, 2006-07-27 Points:At the core is a set of Statements (aka facts), which are typically written down or learnedTell the story as if the present is a tester, they have knowledge of their test cases and of Joe. In the Web 1.0/2.0 way to learn these things is by publishing on a HTML page for a human consumer of itThis follows TBL’s 4 rules for linked dataFirst we give these statement URIs so computers can identify them and understand them. Grouping into subject-predicate-object builds the statementNext we can do a HTTP GET to learn moreWhen we learn more, it is in the form of more statements with URIsThose URIs point to more things or relate things back to things we already know (Joe)Jira http://www.atlassian.com/software/jira/overview Points:Same information as the previous slide but just as a direct graphHighlight this is just the way the web worksCan point out that easy to extend to include things like: can learn when dependent software has been fixed, built and where it is available Key pointsRequest URI == subjectResource has a typeSimple defnResponse representation is the full state of the resource (there is no other data the server knows about it, all other data is either inbound links or stored where it doesn’t know) http://incubator.apache.org/clerezza/ Clerezza allows to easily develop semantic web applications by providing tools to manipulate RDF data, create RESTful Web Serviceshttp://stanbol.apache.org/index.html Apache Stanbol's intended use is to extend traditional content management systems with semantic serviceshttp://jena.apache.org/documentation/serving_data/index.html Apache Jena and FusekiFuseki is a SPARQL server. It provides REST-style SPARQL HTTP Update, SPARQL Query, and SPARQL Update using the SPARQL protocol over HTTP.http://incubator.apache.org/wink/ http://eclipse/lyo