SlideShare a Scribd company logo
CTS2 Overview

CTS2 IN ACTION
Schedule

• Why develop against CTS2?
• JSON format
• Searching
• ChangeSet workflow
• Mapping view/create
• Bioportal integration
Why develop against CTS2?

CTS2 Development Framework
supports XML, JSON, and JSONP
• JSONP is useful in avoiding Cross-Site-Scripting conflicts in
  browsers

Resources are linked via Hypermedia
• Even though a WADL is provided, Resources may be
  dynamically traversed via hrefs. Little prior knowledge of
  the service is needed

Result Sets are page able
• All result sets have „next‟, „previous‟ hrefs
What exists right now

• The CTS2 Development Framework
https://github.com/cts2/cts2-framework

• Bioportal -> CTS2 Wrapper
https://github.com/cts2/bioportal-service

• eXist implementation
https://github.com/cts2/exist-service
REST API Signatures

General Pattern:
• Resource by name
/[resourceName]/{resourceId}
• Resource by uri
/[resourceName]byuri?uri={uri}
• List of Resources
/[resourceName]s
REST API Signatures

Sub-resources follow the same pattern
• Resource by name
/[resourceName]/{resourceId}/[subresource]/{id}
• All subresources are linked via hrefs

WADL specification:
http://informatics.mayo.edu/svn/trunk/cts2/spec/ps
m/rest/cts2.wadl
REST API Signatures

Our goal is that by Hypermedia, limited
initial knowledge of the service URL
structure is needed.


In fact, CTS2 QUERY/READ services
function like many services we use
every day
JSON Format
•   {"codeSystemCatalogEntry": {
        • "codeSystemName": "LNC",
        • "designedForOntologyTaskList": [ ],
        • "versions": "http://informatics.mayo.edu/cts2/rest/codesystem/LNC/versions",
        • "currentVersion": {
             • "version": {
                  • "content": "LNC_232_RRF",
                  • "href": "http://informatics.mayo.edu/cts2/rest/codesystem/LNC/version/232"
             • },
             • "codeSystem": {
                  • "content": "LNC",
                  • "uri": "http://purl.bioontology.org/ontology/LNC",
                  • "href": "http://informatics.mayo.edu/cts2/rest/codesystem/LNC"
             • }
        • },
        • "releaseFormatList": [ ],
        • "about": "http://purl.bioontology.org/ontology/LNC",
        • "formalName": "Logical Observation Identifier Names and Codes",
        • "keywordList": [
             • "LNC",
             • "1350"
        • ],
        • …
JSON Format (con‟t.)

• Every resource may be returned as
  JSON
• Adding a „callback‟ parameter
  enables JSONP
       callback({"codeSystemVersionCatalogEntry”
{"codeSystemVersionName":"GO_2-0_OBO","versionOf … })
Searching

• Search widget
   • Searching for Entities based on a
    search string
    http://informatics.mayo.edu/cts2widgets/search.html
Searching

• Map Search widget
   • Searching ontology mappings based
    on queries of either the source or
    target
    http://informatics.mayo.edu/cts2/rest/widgets/viewmap.html
ChangeSet Workflow

• What is a ChangeSet?
An ordered collection of changes that, when
applied, will transform a service instance
from one consistent state to another. A
ChangeSet is viewed as an atomic unit of
change.
ChangeSet Workflow

• ChangeSets
ChangeSets can be created, committed, and rolled back. They
are similar to a source control branch.


Content in ChangeSets does NOT appear in normal lookups
and queries, although they MAY be included if explicitly asked
for.
ChangeSet Workflow

• Creating a ChangeSet
   • Each change set has a unique URI
   • ChangeSets start as „OPEN‟
ChangeSet Workflow

• Creating a Resource within a given
 ChangeSet
  • Any Resource state change must
    be within the context of a
    ChangeSet
ChangeSet Workflow

• Creating two branches of changes for
 the same resource
   • The same resource may exist in
     different states in different
     ChangeSets
ChangeSet Workflow

• Committing a ChangeSet
   • Committing a ChangeSet moves
    the content of a ChangeSet into
    the main service content
ChangeSet Workflow

• Rolling back a ChangeSet
   • A rollback will remove all of the
    content associated with the
    change set, as well as the change
    set itself
ChangeSet Workflow

• Creating a Mapping
   • A mapping creates relationships
    between CodeSystemVersions or
    ValueSets
Bioportal Integration

• http://informatics.mayo.edu/cts2widg
 ets/widgets.html
But WHY?
• What is this useful for?
There are many well designed REST services out there – do I
use them all? NO!


Our Goal:
A RESTful, Hypermedia based, self describing service that fills a
community need.


The key is whether the data coming back fills a community
need. Users will still use a poorly designed REST service if it
fills a need. Conversely, a perfectly designed RESTful service
that doesn‟t fill a useful need is still not useful.
What need does CTS2 fill?




 “Pluto is a Planet”
What need does CTS2 fill?
           “Pluto is a Planet”
What is Pluto?




What is a Planet? Is it the International Astronomical Union
definition? Some people have rejected their definition and
defined their own.


Is “Pluto is a Planet” interoperable?
What need does CTS2 fill?



           “Pluto is a Planet”
http://purl.bioontology.org/ontology/MSH/D018542


                http://purl.bioontology.org/ontology/MSH/D016083
Use-case discussion

Given a Use-case:
• Does the CTS2 Spec include it?
• Do we have tools to do it now?
• If not, could they be created? How?
Resources


http://informatics.mayo.edu/cts2/framework/
          See the „In Action‟ section

More Related Content

What's hot (19)

PDF
Drupal 8 as a mobile backend
Alkuvoima
 
PPTX
Database Change Management as a Service
Andrew Solomon
 
PPTX
Database change management with Liquibase
Jarosław Szczepankiewicz
 
PPTX
Continuous DB Changes Delivery With Liquibase
Aidas Dragūnas
 
PPTX
Liquibase
Sergii Fesenko
 
PDF
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide
Shawn Wells
 
PPT
Liquibase – a time machine for your data
Neev Technologies
 
PDF
Liquibase få kontroll på dina databasförändringar
Squeed
 
PPT
LiquiBase
Mike Willbanks
 
PPTX
Liquibase for java developers
Illia Seleznov
 
PDF
Java DataBase Connectivity -JDBC Part-1
Pranil Dukare
 
PPTX
Liquibase migration for data bases
Roman Uholnikov
 
PDF
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016
Alvaro Sanchez-Mariscal
 
KEY
Agile Database Development with Liquibase
Tim Berglund
 
PPTX
Liquibase case study
Vivek Dhayalan
 
PDF
Gradle - Build System
Jeevesh Pandey
 
PDF
Hedis - GET HBase via Redis
Mu Chun Wang
 
PPTX
Dropwizard Internals
carlo-rtr
 
PPTX
Git.From thorns to the stars
Strannik_2013
 
Drupal 8 as a mobile backend
Alkuvoima
 
Database Change Management as a Service
Andrew Solomon
 
Database change management with Liquibase
Jarosław Szczepankiewicz
 
Continuous DB Changes Delivery With Liquibase
Aidas Dragūnas
 
Liquibase
Sergii Fesenko
 
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide
Shawn Wells
 
Liquibase – a time machine for your data
Neev Technologies
 
Liquibase få kontroll på dina databasförändringar
Squeed
 
LiquiBase
Mike Willbanks
 
Liquibase for java developers
Illia Seleznov
 
Java DataBase Connectivity -JDBC Part-1
Pranil Dukare
 
Liquibase migration for data bases
Roman Uholnikov
 
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016
Alvaro Sanchez-Mariscal
 
Agile Database Development with Liquibase
Tim Berglund
 
Liquibase case study
Vivek Dhayalan
 
Gradle - Build System
Jeevesh Pandey
 
Hedis - GET HBase via Redis
Mu Chun Wang
 
Dropwizard Internals
carlo-rtr
 
Git.From thorns to the stars
Strannik_2013
 

Similar to CTS2 Development Framework In Action (20)

PDF
What can Bioinformaticians learn from YouTube?
Matt Wood
 
PPTX
CTS2 Introduction
cts2
 
PDF
Making Things Work Together
Subbu Allamaraju
 
ODP
Biocatalogue, FileQuirks, MyExperiment
Jerzy
 
PPT
Collaborative Workflow Development and Experimentation in the Digital Humanities
cneudecker
 
PPTX
BioThings API: Building a FAIR API Ecosystem for Biomedical Knowledge
Chunlei Wu
 
PPTX
Ontologies and Continuous Integration
Chris Mungall
 
PDF
Cytoscape: Now and Future
Keiichiro Ono
 
PPT
Information server prototype for GFIS
Jarmo Saarikko
 
PPT
Introduction to Web Services - Architecture
Matrix823409
 
PPTX
Evaluating Hypotheses using SPARQL-DL as an abstract workflow language to cho...
Mark Wilkinson
 
PDF
Open Source WCM and Standards
sggottlieb
 
PPT
BioIT Europe 2010 - BioCatalogue
BioCatalogue
 
PDF
PLAT-3 CMIS — What’s coming next?
Alfresco Software
 
PDF
Techniques for Composing REST services - SOA Symposium 2009
Cesare Pautasso
 
PDF
Alfresco WebScript Connector for Apache ManifoldCF
Piergiorgio Lucidi
 
PPT
Open source softwares and its applications
Sarika Sawant
 
PDF
Publishing Linked Data from RDB
Boris Villazón-Terrazas
 
PPT
Adding Meaning To Your Data
Duncan Hull
 
PPTX
Getting Started with CMIS
Jeff Potts
 
What can Bioinformaticians learn from YouTube?
Matt Wood
 
CTS2 Introduction
cts2
 
Making Things Work Together
Subbu Allamaraju
 
Biocatalogue, FileQuirks, MyExperiment
Jerzy
 
Collaborative Workflow Development and Experimentation in the Digital Humanities
cneudecker
 
BioThings API: Building a FAIR API Ecosystem for Biomedical Knowledge
Chunlei Wu
 
Ontologies and Continuous Integration
Chris Mungall
 
Cytoscape: Now and Future
Keiichiro Ono
 
Information server prototype for GFIS
Jarmo Saarikko
 
Introduction to Web Services - Architecture
Matrix823409
 
Evaluating Hypotheses using SPARQL-DL as an abstract workflow language to cho...
Mark Wilkinson
 
Open Source WCM and Standards
sggottlieb
 
BioIT Europe 2010 - BioCatalogue
BioCatalogue
 
PLAT-3 CMIS — What’s coming next?
Alfresco Software
 
Techniques for Composing REST services - SOA Symposium 2009
Cesare Pautasso
 
Alfresco WebScript Connector for Apache ManifoldCF
Piergiorgio Lucidi
 
Open source softwares and its applications
Sarika Sawant
 
Publishing Linked Data from RDB
Boris Villazón-Terrazas
 
Adding Meaning To Your Data
Duncan Hull
 
Getting Started with CMIS
Jeff Potts
 
Ad

Recently uploaded (20)

PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Learn Computer Forensics, Second Edition
AnuraShantha7
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Q2 Leading a Tableau User Group - Onboarding
lward7
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Learn Computer Forensics, Second Edition
AnuraShantha7
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Q2 Leading a Tableau User Group - Onboarding
lward7
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
Ad

CTS2 Development Framework In Action

  • 2. Schedule • Why develop against CTS2? • JSON format • Searching • ChangeSet workflow • Mapping view/create • Bioportal integration
  • 3. Why develop against CTS2? CTS2 Development Framework supports XML, JSON, and JSONP • JSONP is useful in avoiding Cross-Site-Scripting conflicts in browsers Resources are linked via Hypermedia • Even though a WADL is provided, Resources may be dynamically traversed via hrefs. Little prior knowledge of the service is needed Result Sets are page able • All result sets have „next‟, „previous‟ hrefs
  • 4. What exists right now • The CTS2 Development Framework https://github.com/cts2/cts2-framework • Bioportal -> CTS2 Wrapper https://github.com/cts2/bioportal-service • eXist implementation https://github.com/cts2/exist-service
  • 5. REST API Signatures General Pattern: • Resource by name /[resourceName]/{resourceId} • Resource by uri /[resourceName]byuri?uri={uri} • List of Resources /[resourceName]s
  • 6. REST API Signatures Sub-resources follow the same pattern • Resource by name /[resourceName]/{resourceId}/[subresource]/{id} • All subresources are linked via hrefs WADL specification: http://informatics.mayo.edu/svn/trunk/cts2/spec/ps m/rest/cts2.wadl
  • 7. REST API Signatures Our goal is that by Hypermedia, limited initial knowledge of the service URL structure is needed. In fact, CTS2 QUERY/READ services function like many services we use every day
  • 8. JSON Format • {"codeSystemCatalogEntry": { • "codeSystemName": "LNC", • "designedForOntologyTaskList": [ ], • "versions": "http://informatics.mayo.edu/cts2/rest/codesystem/LNC/versions", • "currentVersion": { • "version": { • "content": "LNC_232_RRF", • "href": "http://informatics.mayo.edu/cts2/rest/codesystem/LNC/version/232" • }, • "codeSystem": { • "content": "LNC", • "uri": "http://purl.bioontology.org/ontology/LNC", • "href": "http://informatics.mayo.edu/cts2/rest/codesystem/LNC" • } • }, • "releaseFormatList": [ ], • "about": "http://purl.bioontology.org/ontology/LNC", • "formalName": "Logical Observation Identifier Names and Codes", • "keywordList": [ • "LNC", • "1350" • ], • …
  • 9. JSON Format (con‟t.) • Every resource may be returned as JSON • Adding a „callback‟ parameter enables JSONP callback({"codeSystemVersionCatalogEntry” {"codeSystemVersionName":"GO_2-0_OBO","versionOf … })
  • 10. Searching • Search widget • Searching for Entities based on a search string http://informatics.mayo.edu/cts2widgets/search.html
  • 11. Searching • Map Search widget • Searching ontology mappings based on queries of either the source or target http://informatics.mayo.edu/cts2/rest/widgets/viewmap.html
  • 12. ChangeSet Workflow • What is a ChangeSet? An ordered collection of changes that, when applied, will transform a service instance from one consistent state to another. A ChangeSet is viewed as an atomic unit of change.
  • 13. ChangeSet Workflow • ChangeSets ChangeSets can be created, committed, and rolled back. They are similar to a source control branch. Content in ChangeSets does NOT appear in normal lookups and queries, although they MAY be included if explicitly asked for.
  • 14. ChangeSet Workflow • Creating a ChangeSet • Each change set has a unique URI • ChangeSets start as „OPEN‟
  • 15. ChangeSet Workflow • Creating a Resource within a given ChangeSet • Any Resource state change must be within the context of a ChangeSet
  • 16. ChangeSet Workflow • Creating two branches of changes for the same resource • The same resource may exist in different states in different ChangeSets
  • 17. ChangeSet Workflow • Committing a ChangeSet • Committing a ChangeSet moves the content of a ChangeSet into the main service content
  • 18. ChangeSet Workflow • Rolling back a ChangeSet • A rollback will remove all of the content associated with the change set, as well as the change set itself
  • 19. ChangeSet Workflow • Creating a Mapping • A mapping creates relationships between CodeSystemVersions or ValueSets
  • 21. But WHY? • What is this useful for? There are many well designed REST services out there – do I use them all? NO! Our Goal: A RESTful, Hypermedia based, self describing service that fills a community need. The key is whether the data coming back fills a community need. Users will still use a poorly designed REST service if it fills a need. Conversely, a perfectly designed RESTful service that doesn‟t fill a useful need is still not useful.
  • 22. What need does CTS2 fill? “Pluto is a Planet”
  • 23. What need does CTS2 fill? “Pluto is a Planet” What is Pluto? What is a Planet? Is it the International Astronomical Union definition? Some people have rejected their definition and defined their own. Is “Pluto is a Planet” interoperable?
  • 24. What need does CTS2 fill? “Pluto is a Planet” http://purl.bioontology.org/ontology/MSH/D018542 http://purl.bioontology.org/ontology/MSH/D016083
  • 25. Use-case discussion Given a Use-case: • Does the CTS2 Spec include it? • Do we have tools to do it now? • If not, could they be created? How?