Your SlideShare is downloading. ×
JavaOne2013 Leveraging Linked Data and OSLC
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JavaOne2013 Leveraging Linked Data and OSLC

584
views

Published on

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

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
584
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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'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

    • 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. Agenda Uses and Background What is it Linked Data Standardization Open Source © 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
    • 8. Agenda Uses and Background What is it Linked Data Standardization Open Source © 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
    • 14. Agenda Uses and Background What is it Linked Data Standardization Open Source © 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
    • 32. Agenda Uses and Background What is it Linked Data Standardization Open Source © 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
    • 38. Questions? © 2013 IBM Corporation
    • 39. BACKUP © 2012 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