Your SlideShare is downloading. ×
0
Leveraging W3C Linked Data Platform for
Loosely Coupled Application Integrations
JavaOne 2013 Session CON2492
Steve Speich...
Agenda
Uses and
Background
What is it

Linked Data
Standardization
Open
Source

© 2013 IBM Corporation
Software Development Tools : Year 2000 - point products
Software
Configuration
Management

Test automation
& management

B...
Year 2005 – ALM V1
Software
Configuration
Management

Test automation
& management

Build automation
& management

Work-it...
Year 2010 – Linked Data and OSLC – A major breakthrough
Software
Configuration
Management

Build automation
& management

...
Cloud Application Management pain points
Managing the lifecycle of cloud applications is complex:

- Different tools to ma...
Healthcare – Adverse Event Reporting Landscape

Regulatory
Agency

Local
Office Systems

Drug
Producer

For each of these ...
Agenda
Uses and
Background
What is it

Linked Data
Standardization
Open
Source

© 2013 IBM Corporation
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...
Linked Data – What is it?

TestCase 14 is blocked by Issue 973
http://srv/qm/tc/14

qm:blockedBy

http://apache.org/jira/H...
Linked Data – What is it? Show me a picture

TestCase
14
Joe
Issue
973
Apache
Bug
318

© 2013 IBM Corporation
Linked Data – Bridging separate data sources (but with meaning)

Source: http://lod-cloud.net Sept 2011

© 2013 IBM Corpor...
OSLC – Based on Linked Data
Lifecycle Tool
<http://cm/bugs/2314>
Common Resource Definitions
a oslc_cm:ChangeRequest ;
Cha...
Agenda
Uses and
Background

What is it

Linked Data
Standardization
Open
Source

© 2013 IBM Corporation
Linked Data – state of the art
Has some limitations:
– Focused on exposing data with relationships
– No support for update...
Evolution of W3C Linked Data
 W3C Linked Data
 Four design principles proposed by Tim Berners-Lee in a 2006 article
 St...
W3C Linked Data Platform (LDP) Working Group
 Workgroup membership spans 49 participants from 30 organizations
 Particip...
W3C Linked Data Platform (LDP)

CAUTION: Specification is still under construction.

© 2013 IBM Corporation
Linked Data Platform - Resource
 What resource formats should be used?
 What literal value types should be used?
 Are t...
Request

LDP Resource – GET a simple example
GET /container1/member1 HTTP/1.1
Host: example.org
Accept: text/turtle

Respo...
Linked Data Platform - Container
 To which URLs can I POST to create new resources?
 Where can I GET a list of existing ...
Request

ldp:Container – GET a simple example
GET /container1/ HTTP/1.1
Host: example.org
Accept: text/turtle

container1
...
Request

ldp:Container – create resource and add
POST /container1/ HTTP/1.1
Host: example.org
Content-type: text/turtle
Co...
Request

ldp:Container – get updated
GET /container1/ HTTP/1.1
Host: example.org
Accept: text/turtle

container1
member1

...
ldp:Container – Net worth example

Disclaimer: picture only in UML, does not follow UML constraints
© 2013 IBM Corporation
ldp:Container – slightly more complex example
# The following is the representation of
#
http://example.org/netWorth/nw1
@...
ldp:Container – Member Information
# chopped @prefix
<http://example.org/netWorth/nw1>
a o:NetWorth;
o:asset
<http://examp...
Request

ldp:Container – Only data about it, no members
GET /netWorth/nw1?non-member-properties HTTP/1.1
Host: example.org...
ldp:Container – Paging (first page)
# Request-URI: http://example.org/netWorth/nw1?firstPage
<http://example.org/netWorth/...
ldpContainer – Paging (last page)
# Request-URI: http://example.org/netWorth/nw1/assetContainer/?p=2
# omitted @prefix
<ht...
ldp:Container – Paging (ordering)
# Request-URI: http://example.org/netWorth/nw1/assetContainer/?firstPage
# omitted @pref...
Agenda
Uses and
Background
What is it

Linked Data
Standardization
Open
Source

© 2013 IBM Corporation
Open Source Linked Data projects
Simple yet solid framework for building RESTful Web
services based on JAX-RS
RDF Java API...
Handling Linked Data requests - GET
@GET
@Path("{crId}")
@Produces({“application/rdf+xml”, “application/xml”, “application...
Handling Linked Data requests – HTTP POST
@OslcCreationFactory ( resourceTypes = {“http://open-services.net/ns/cm#ChangeRe...
Annotating Classes for RDF
@OslcNamespace(“http://open-services.net/ns/cm#”)
@OslcResourceShape(describes = “http://open-s...
Wrapping up
 Linked Data space is actively evolving and maturing

 Loosely-coupled application integrations have benefit...
Questions?

© 2013 IBM Corporation
BACKUP

© 2012 IBM Corporation
Open Services for Lifecycle Collaboration (OSLC)
Working to improve the way software lifecycle tools share data
Open Servi...
Upcoming SlideShare
Loading in...5
×

JavaOne2013 Leveraging Linked Data and OSLC

621

Published on

JavaOne 2013 talk titled "Leveraging W3C Linked Data Platform for Loosely Coupled Application Integrations"

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
621
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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&apos;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
  • Transcript of "JavaOne2013 Leveraging Linked Data and OSLC"

    1. 1. 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
    2. 2. Agenda Uses and Background What is it Linked Data Standardization Open Source © 2013 IBM Corporation
    3. 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. 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. 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. 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. 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
    8. 8. Agenda Uses and Background What is it Linked Data Standardization Open Source © 2013 IBM Corporation
    9. 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. 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. 11. Linked Data – What is it? Show me a picture TestCase 14 Joe Issue 973 Apache Bug 318 © 2013 IBM Corporation
    12. 12. Linked Data – Bridging separate data sources (but with meaning) Source: http://lod-cloud.net Sept 2011 © 2013 IBM Corporation
    13. 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
    14. 14. Agenda Uses and Background What is it Linked Data Standardization Open Source © 2013 IBM Corporation
    15. 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. 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. 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. 18. W3C Linked Data Platform (LDP) CAUTION: Specification is still under construction. © 2013 IBM Corporation
    19. 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. 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. 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. 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. 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. 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. 25. ldp:Container – Net worth example Disclaimer: picture only in UML, does not follow UML constraints © 2013 IBM Corporation
    26. 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. 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. 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. 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. 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. 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
    32. 32. Agenda Uses and Background What is it Linked Data Standardization Open Source © 2013 IBM Corporation
    33. 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. 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. 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. 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. 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
    38. 38. Questions? © 2013 IBM Corporation
    39. 39. BACKUP © 2012 IBM Corporation
    40. 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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×