1 / 17

caCORE Case Study: LexBIG API integration

caCORE Case Study: LexBIG API integration. Characteristics of caCORE. Components. Model Driven Architecture All caCORE components designed in UML and appropriate APIs generated from this information model n -tier Architecture and Open APIs

skip
Télécharger la présentation

caCORE Case Study: LexBIG API integration

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. caCORE Case Study: LexBIG API integration

  2. Characteristics of caCORE Components • Model Driven Architecture • All caCORE components designed in UML and appropriate APIs generated from this information model • n-tier Architecture and Open APIs • All caCORE components publish a series of well-described APIs (Java Beans, Web Services, HTTP interface (REST)) that provide open read access to data • APIs implemented in an n-tier architecture that allows for flexibility in the persistence layer and shields end users from implementation details • Registered Metadata • All caCORE components register detailed descriptions of their object APIs in a repository - this ‘data about data’ is called metadata • Controlled Terminology • All caCORE components use controlled terminology to describe metadata and (where appropriate) data

  3. caCORE System Architecture • caCORE is based on an n-tier architecture • Provides middleware between data and presentation • Data Access Objects • Domain objects (Java Beans) • Application Service • API Interfaces (JavaAPI, Web services, XML-HTTP)

  4. Non-ORM system • LexBIG is a Non-”Object Relational Mapping” (ORM) system • caCORE EVS domain object mapped to LexBIG objects. Mapping is Object To Object Mapping (OTOM)

  5. Current vs LexBIG integrated System Current: Web App DTSRPC DTS caCORE Metaphrase DB LexBIG integrated System: Web App Index caCORE LexBIG DB

  6. How was LexBIG integrated? • New LexAdapter – “wrapper” around LexBIG • Provides: • “wrapper” for OTOM (facilitate seamless integration of down-stream applications) • LexBIG API configurations • New Data Access layer -- EVSLexBigDAOImpl • DAO used by the caCORE system. Accesses data via LexAdapter

  7. Class Diagram

  8. Why Incorporate LexBIG in caCORE? • Current terminology components are proprietary, Metaphrase is frozen • Requires complex architecture in caCORE • Difficult to enhance functionality • Lacks support for open data formats • Performance, lexical processing, graphs • Foreign language, DL support limitations

  9. Demo – NCI Terminology Browser

  10. Demo – HTML Interface (REST) http://cabio-lexbig.nci.nih.gov/cacore32/GetHTML? query=gov.nih.nci.evs.domain.DescLogicConcept &gov.nih.nci.evs.domain.DescLogicConcept[@code=C12756]

  11. Demo – XML Interface (REST) http://cabio-lexbig.nci.nih.gov/cacore32/GetXML? query=gov.nih.nci.evs.domain.DescLogicConcept &gov.nih.nci.evs.domain.DescLogicConcept[@code=C12756]

  12. Demo – Java API /************* Java API Test ***********************************************/ // 1. Search a DescLogicConcept /***************************************************************************/ System.out.println("--------------------Java API Test-----------------------"); System.out.println("1. Search for DescLogicConcepts where concept name ‘blood*'"); System.out.println("------------------------------------------------------\n"); ApplicationService appService = ApplicationService.getRemoteInstance("http://cabio-lexbig.nci.nih.gov/cacore32/http/remoteService"); EVSQuery evsQuery = new EVSQueryImpl(); String vocabularyName = "NCI_Thesaurus"; String searchTerm = “blood*"; evsQuery.searchDescLogicConcepts(vocabularyName , searchTerm, 100); List resultList = appService.evsSearch(evsQuery); for(int i=0; i< resultList.size(); i++){ gov.nih.nci.evs.domain.DescLogicConcept dlc= (gov.nih.nci.evs.domain.DescLogicConcept) resultList.get(i); System.out.println("Code: "+ dlc.getCode() +"\t"+ dlc.getName()); }

  13. Demo - CaCORE Perl #!/usr/bin/perl -w use strict; use LWP::UserAgent; use HTTP::Request::Common; use CaCORE::ApplicationService; use CaCORE::EVS; my $appsvc = CaCORE::ApplicationService->instance("http://cabio-lexbig.nci.nih.gov/cacore32/ws/caCOREService"); # Search DescLogicConcept by code # # This test searches for all DescLogicConcepts with a given code # print "Search DescLogicConcept by code.\n"; my $dlConcept = new CaCORE::EVS::DescLogicConcept; $dlConcept->setCode("C12756"); eval{ @dlcSet = $appsvc->queryObject("CaCORE::EVS::DescLogicConcept", $dlConcept); }; foreach my $dlc (@dlcSet) { print "DescLogicConcept: code=" . $dlc->getCode . ", name=" . $dlc->getName . "\n"; }

  14. Project Resources and Communication • EVS / LexBIG install http://cabio-lexbig.nci.nih.gov/NCIBrowser/Dictionary.do http://cabio-lexbig.nci.nih.gov/cacore32/Happy.jsp • EVS Homepage: http://ncicb.nci.nih.gov/NCICB/infrastructure/cacore_overview/vocabulary • EVS 3.2 Release: • Release Notes http://ncicb.nci.nih.gov/NCICB/infrastructure/caCORE3.2_notes.txt • Java API download:http://ncicb.nci.nih.gov/download/cabiolicenseagreement.jsp • Technical Guide ftp://ftp1.nci.nih.gov/pub/cacore/caCORE3.2_Tech_Guide.pdf • EVS Users Mailing List https://list.nih.gov/archives/ncievs-l.html

  15. Extras

  16. Class Diagram

  17. Sequence Diagram • Use case: user searching for an EVS object. (Note: ApplicationService layers removed for brevity.)

More Related