Using the MetaMap Java API



Similar documents
AmbrosiaMQ-MuleSource ESB Integration

Introduction to HP ArcSight ESM Web Services APIs

LICENSE4J FLOATING LICENSE SERVER USER GUIDE

Deploying Microsoft Operations Manager with the BIG-IP system and icontrol

Practice Fusion API Client Installation Guide for Windows

Active Directory Sync (AD) How it Works in WhosOnLocation

Enhanced Connector Applications SupportPac VP01 for IBM WebSphere Business Events 3.0.0

Active Directory Sync (AD) How to Setup

Magento Search Extension TECHNICAL DOCUMENTATION

PHP Integration Kit. Version User Guide

How To - Implement Single Sign On Authentication with Active Directory

VERSION 9.02 INSTALLATION GUIDE.

SAIP 2012 Performance Engineering

GATE Mímir and cloud services. Multi-paradigm indexing and search tool Pay-as-you-go large-scale annotation

ZeroTurnaround License Server User Manual 1.4.0

There are numerous ways to access monitors:

Onset Computer Corporation

UFTP AUTHENTICATION SERVICE

ITG Software Engineering

a) Install the SDK into a directory of your choice (/opt/java/jdk1.5.0_11, /opt/java/jdk1.6.0_02, or YOUR_JAVA_HOME_DIR)

Maven2 Reference. Invoking Maven General Syntax: Prints help debugging output, very useful to diagnose. Creating a new Project (jar) Example:

Outside In Image Export Technology SDK Quick Start Guide

Installation Guide for FTMS and Node Manager 1.6.0

The Prolog Interface to the Unstructured Information Management Architecture

SafeNet KMIP and Google Cloud Storage Integration Guide

System Requirement Specification for A Distributed Desktop Search and Document Sharing Tool for Local Area Networks

SAS Marketing Automation 4.4. Unix Install Instructions for Hot Fix 44MA10

Copyright 2013 Consona Corporation. All rights reserved

Software Architecture Document

TCH Forecaster Installation Instructions

MarkLogic Server. MarkLogic Connector for Hadoop Developer s Guide. MarkLogic 8 February, 2015

Eclipse installation, configuration and operation

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5

Using RADIUS Agent for Transparent User Identification

StreamServe Persuasion SP4

ORACLE GOLDENGATE BIG DATA ADAPTER FOR FLUME

TMUNSW: Identification of disorders and normalization to SNOMED-CT terminology in unstructured clinical notes

DiskPulse DISK CHANGE MONITOR

Free Text Phrase Encoding and Information Extraction from Medical Notes. Jennifer Shu

Installation Guide. Copyright (c) 2015 The OpenNMS Group, Inc. OpenNMS SNAPSHOT Last updated :19:20 EDT

SEER Enterprise Shared Database Administrator s Guide

AdWhirl Open Source Server Setup Instructions

PTC Integrity Eclipse and IBM Rational Development Platform Guide

SAP HANA Client Installation and Update Guide

Upgrading MySQL from 32-bit to 64-bit

Using Actian PSQL as a Data Store with VMware vfabric SQLFire. Actian PSQL White Paper May 2013

RHadoop Installation Guide for Red Hat Enterprise Linux

Installation of IBM DB2 9.1.x and Q-Monitor 3.x.x

NGASI AppServer Manager SaaS/ASP Hosting Automation for Cloud Computing Administrator and User Guide

XMLVend Protocol Message Validation Suite

Ellucian Recruiter Installation and Integration. Release 4.1 December 2015

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Single Node Hadoop Cluster Setup

Monitoring Oracle Enterprise Performance Management System Release Deployments from Oracle Enterprise Manager 12c

How to utilize Administration and Monitoring Console (AMC) in your TDI solution

How To Create An Easybelle History Database On A Microsoft Powerbook (Windows)

Integrating VoltDB with Hadoop

Exchange Migration Guide

DEPLOYMENT GUIDE DEPLOYING F5 AUTOMATED NETWORK PROVISIONING FOR VMWARE INFRASTRUCTURE

Application Notes for Packaging and Deploying Avaya Communications Process Manager Sample SDK Web Application on a JBoss Application Server Issue 1.

Apache Hadoop 2.0 Installation and Single Node Cluster Configuration on Ubuntu A guide to install and setup Single-Node Apache Hadoop 2.

EventTracker: Configuring DLA Extension for AWStats Report AWStats Reports

ODBC Driver User s Guide. Objectivity/SQL++ ODBC Driver User s Guide. Release 10.2

ORACLE GOLDENGATE BIG DATA ADAPTER FOR HIVE

Apache Stratos (incubating) M5 Installation Guide

How to configure the DBxtra Report Web Service on IIS (Internet Information Server)

Sentinel Cloud V.3.5 Installation Guide

SDK Code Examples Version 2.4.2

SysPatrol - Server Security Monitor

Secret Server Installation Windows 8 / 8.1 and Windows Server 2012 / R2

Drupal CMS for marketing sites

How To: Manage your Oracle patch deployment life cycle using Oracle Support Patch Plans

ADFS 2.0 Application Director Blueprint Deployment Guide

Setting up SQL Translation Framework OBE for Database 12cR1

PART 1 CONFIGURATION 1.1 Installing Dashboard Software Dashboardxxx.exe Administration Rights Prerequisite Wizard

32-Bit Workload Automation 5 for Windows on 64-Bit Windows Systems

Secure Messaging Server Console... 2

Lucid Key Server v2 Installation Documentation.

WORKING WITH LOAD BALANCING AND QUEUEING FOR ADOBE INDESIGN CS5 SERVER

ITA Mail Archive Setup Guide

Configuring Apache HTTP Server With Pramati

SAP Business Intelligence Platform Translation Management Tool SDK Developer Guide

Running Knn Spark on EC2 Documentation

Alteryx Predictive Analytics for Oracle R

Project 5 Twitter Analyzer Due: Fri :59:59 pm

NetBeans IDE Field Guide

CS255 Programming Project 2

WEBTITAN CLOUD. User Identification Guide BLOCK WEB THREATS BOOST PRODUCTIVITY REDUCE LIABILITIES

Hudson Continous Integration Server. Stefan Saasen,

Microsoft Business Intelligence 2012 Single Server Install Guide

EventTracker: Configuring DLA Extension for AWStats report AWStats Reports

AklaBox. The Ultimate Document Platform for your Cloud Infrastructure. Installation Guideline

SimbaEngine SDK 9.4. Build a C++ ODBC Driver for SQL-Based Data Sources in 5 Days. Last Revised: October Simba Technologies Inc.

MONIT. UNIX Systems Management

HOWTO: Setting up WP7 monitoring tools with GLite

Personal Token Software Installation Guide

Test Automation Integration with Test Management QAComplete

Transcription:

Using the MetaMap Java API Willie Rogers June 2, 2014 Contents 1 Purpose 2 2 MetaMap API s Underlying Architecture 2 3 Pre-requisites 2 4 Downloading, Extracting and Installing the API distribution 2 5 Using the MetaMap server 3 5.1 Starting supporting servers................................ 3 5.2 Running the MetaMap server............................... 3 6 Testing the API 3 7 Using the API 6 7.1 Instantiating the API................................... 6 7.2 Setting MetaMap options................................. 7 7.3 Performing a query using the api............................. 8 7.4 Interrogating the result.................................. 8 7.4.1 Getting Acronyms and Abbreviations...................... 8 7.4.2 Getting Negations................................. 8 7.4.3 Getting Utterances and Associated Phrases, Candidates, and Mappings... 9 7.5 Getting Raw MetaMap Machine Output......................... 10 8 Advanced Configuration 11 8.1 Accepting the client connections from remote hosts................... 11 8.2 Running the MetaMap server on an alternate port................... 11 8.3 Specifying alternate MetaMap Server hosts and ports in the API........... 11 9 Location of jar files 11 10 Notes for Maven Users 12 1

1 PURPOSE 2 11 What is missing from the API 12 12 The MetaMap UIMA Annotator 12 13 Possible enhancements 12 14 Differences compared to MMTx API 12 15 Windows XP/7 differences 12 16 For more information 13 1 Purpose MetaMap maps terms occuring in text to UMLS Metathesaurus concepts. As part of this mapping process, MetaMap tokenizes text into sections, sentences, phrases, terms, and words. MetaMap maps the noun phrases of the text to the best matching UMLS concept or set of concepts that best cover each phrase. The MetaMap Java API provides java programs with programmatic access to MetaMap mapping engine. 2 MetaMap API s Underlying Architecture MetaMap mapping engine is written primarily in SICStus Prolog; to facilitate its use by Java programs, the system uses PrologBeans to provide a loose coupling between the Java API and the mapping engine. See the SICStus Prolog PrologBeans documentation for more information ( http: //www.sics.se/sicstus/docs/latest4/html/sicstus.html/lib_002dprologbeans.html). 3 Pre-requisites The full MetaMap download and installation is required to use the MetaMap Java API (see \http://metamap.nlm.nih.gov/#downloads). Also, Java 1.6 SDK or greater is required. (It should work Java 1.5 but it has not been tested with Java 1.5) 4 Downloading, Extracting and Installing the API distribution In the directory where you installed the Public Metamap (the directory containing the public mm directory) extract the javaapi archive: $ bzip2 -dc /home/piro/public_mm_linux_javaapi_{four-digit-year.tar.bz2 tar xvf - If you plan on modifying the sources to the prolog-based MetaMap server (mmserver) you will need to download and extract the source archive ( http://metamap.nlm.nih.gov/download/public_ mm_src_{four-digit-year.tar.bz2) as well: $ bzip2 -dc /home/piro/public_mm_src_{four-digit-year.tar.bz2 tar xvf -

5 USING THE METAMAP SERVER 3 You will need to re-run./bin/install.sh from the public mm directory to setup the files for javaapi. $./bin/install.sh 5 Using the MetaMap server 5.1 Starting supporting servers The MetaMap server (mmserver) must first be running to use the Java API. If the SKR/Medpost Tagger is not already running start it using the following command: $./bin/skrmedpostctl start Under Windows use the following: \public_mm> bin\skrmedpostctl_start If you wish to the Word Sense Disambiguation (WSD) Server (optional), start it also. $./bin/wsdserverctl start Under Windows use the following: public_mm> bin\wsdserverctl_start 5.2 Running the MetaMap server Then start the MetaMap server: $./bin/mmserver{two-digit-year /home/piro/public_mm/bin/skrrun -L {year \ -w /home/piro/public_mm/lexicon /home/piro/public_mm/bin/mmserver{year.binary.linux -Z {t Server options: [port(8888),accepted_hosts([ 127.0.0.1, 130.14.111.76, 130.14.110.82 ])] Berkeley DB databases (normal {two-digit-year strict model) are open. Static variants will come from table varsan in /home/piro/public_mm/db/bdb4/db.normal.{two-digi Derivational Variants: Adj/noun ONLY. Accessing lexicon /home/piro/public_mm/lexicon/data/bdb4/lexiconstatic{four-digit-year. Variant generation mode: static. If you re using Windows XP or Windows 7 then use the command bin\mmserver11 in a Command Prompt or Windows PowerShell window. 6 Testing the API Using another terminal, you can verify that api is running using the program testapi.sh (testapi.bat on Windows) which takes a query as an argument:

6 TESTING THE API 4 $./testapi.sh laboratory culture options: [] terms: laboratory culture input text: laboratory culture Utterance: Id: 00000000.tx.1 Utterance text: laboratory culture Position: (0, 19) Phrase: text: laboratory culture Minimal Commitment Parse: [head([lexmatch([laboratory culture]),inputmatch([laboratory,culture Candidates: Score: -1000 Concept Id: C0430400 Concept Name: Laboratory culture Preferred Name: Laboratory culture Matched Words: [laboratory, culture] Semantic Types: [lbpr] MatchMap: [[[1, 2], [1, 2], 0]] MatchMap alt. repr.: [[[phrase start: 1, phrase end: 2], [concept start: 1, concept end: 2], Sources: [MTH, LNC, MDR, NCI, RCD, MEDCIN, CCPSS, SNOMEDCT] Positional Info: [(0, 18)] Score: -861 Concept Id: C0010453 Concept Name: Culture Preferred Name: Anthropological Culture Matched Words: [culture] Semantic Types: [idcn] MatchMap: [[[2, 2], [1, 1], 0]] MatchMap alt. repr.: [[[phrase start: 2, phrase end: 2], [concept start: 2, concept end: 2], Sources: [MTH, PSY, ICNP, LCH, MSH, NCI, CSP] Positional Info: [(11, 7)] Score: -861 Concept Id: C0022877 Concept Name: Laboratory Preferred Name: Laboratory Matched Words: [laboratory] Semantic Types: [mnob, orgt] MatchMap: [[[1, 1], [1, 1], 0]] MatchMap alt. repr.: [[[phrase start: 1, phrase end: 1], [concept start: 1, concept end: 1],

6 TESTING THE API 5 Sources: [LNC, MSH, MTH, NCI, RCD, SNOMEDCT, OMIM, LCH, ALT] Positional Info: [(0, 10)] Score: -861 Concept Id: C0220814 Concept Name: culture Preferred Name: Cultural aspects Matched Words: [culture] Semantic Types: [ftcn] MatchMap: [[[2, 2], [1, 1], 0]] MatchMap alt. repr.: [[[phrase start: 2, phrase end: 2], [concept start: 2, concept end: 2], Sources: [MTH, MSH] Positional Info: [(11, 7)] Score: -861 Concept Id: C0430400 Concept Name: Culture Preferred Name: Laboratory culture Matched Words: [culture] Semantic Types: [lbpr] MatchMap: [[[2, 2], [1, 1], 0]] MatchMap alt. repr.: [[[phrase start: 2, phrase end: 2], [concept start: 2, concept end: 2], Sources: [MTH, LNC, MDR, NCI, RCD, MEDCIN, CCPSS, SNOMEDCT] Positional Info: [(11, 7)] Score: -861 Concept Id: C1706355 Concept Name: CULTURE Preferred Name: Culture Dose Form Matched Words: [culture] Semantic Types: [bodm] MatchMap: [[[2, 2], [1, 1], 0]] MatchMap alt. repr.: [[[phrase start: 2, phrase end: 2], [concept start: 2, concept end: 2], Sources: [MTH, NCI] Positional Info: [(11, 7)] Score: -861 Concept Id: C2242979 Concept Name: Culture Preferred Name: Culture

7 USING THE API 6 Matched Words: [culture] Semantic Types: [lbpr] MatchMap: [[[2, 2], [1, 1], 0]] MatchMap alt. repr.: [[[phrase start: 2, phrase end: 2], [concept start: 2, concept end: 2], Sources: [MTH, SNOMEDCT, SNM, SNMI] Positional Info: [(11, 7)] Score: -827 Concept Id: C1619828 Concept Name: Laboratories Preferred Name: Laboratories Matched Words: [laboratories] Semantic Types: [inpr] MatchMap: [[[1, 1], [1, 1]]] MatchMap alt. repr.: [[[phrase start: 1, phrase end: 1], [concept start: 1, concept end: 1], Sources: [MTH, HL7V3.0] Positional Info: [(0, 10)] Mappings: Map Score: -1000 Score: -1000 Concept Id: C0430400 Concept Name: Laboratory culture Preferred Name: Laboratory culture Matched Words: [laboratory, culture] Semantic Types: [lbpr] MatchMap: [[[1, 2], [1, 2], 0]] MatchMap alt. repr.: [[[phrase start: 1, phrase end: 2], [concept start: 1, concept end: 2], Sources: [MTH, LNC, MDR, NCI, RCD, MEDCIN, CCPSS, SNOMEDCT] Positional Info: [(0, 18)] $ The source to java class used testapi.sh is in./src/javaapi/sources/gov/nih/nlm/nls/metamap/metamapapit 7 Using the API 7.1 Instantiating the API The following sections expose the source code used to produce the example output shown in previous section MetaMapApi api = new MetaMapApiImpl();

7 USING THE API 7 If one is running the MetaMap server (mmserver) of a machine other than the one the Java api client is running, one can specify the hostname of the MetaMap server when instantiating the api: If the MetaMap server is running on the host: resource.example.org then the instantiation would be as follows: MetaMapApi api = new MetaMapApiImpl("resource.example.org"); 7.2 Setting MetaMap options api.setoptions("-y"); // turn on Word Sense Disambiguation Multiple options api.setoptions("-yk dsyn"); // turn on Word Sense Disambiguation and // exclude concepts with dsyn // (disease or syndrome) Or alternatively: api.setoptions("-y -k dsyn"); // turn on Word Sense Disambiguation and // exclude concepts with dsyn // (disease or syndrome) Or a more complicated method: List<String> theoptions = new ArrayList<String>(); theoptions.append("-y"); // turn on Word Sense Disambiguation if (theoptions.size() > 0) { api.setoptions(theoptions); MetaMap options available in the api: -@ --WSD <hostname> : Which WSD server to use. -8 --dynamic_variant_generation : dynamic variant generation -A --strict_model : use strict model -C --relaxed_model : use relaxed model -D --all_derivational_variants : all derivational variants -J --restrict_to_sts <semtypelist> : restrict to semantic types -K --ignore_stop_phrases : ignore stop phrases. -R --restrict_to_sources <sourcelist> : restrict to sources -S --tagger <sourcelist> : Which tagger to use. -V --mm_data_version <name> : version of MetaMap data to use. -X --truncate_candidates_mappings : truncate candidates mapping -Y --prefer_multiple_concepts : prefer multiple concepts -Z --mm_data_year <name> : year of MetaMap data to use. -a --all_acros_abbrs : allow Acronym/Abbreviation variants

7 USING THE API 8 -b --compute_all_mappings : compute/display all mappings -d --no_derivational_variants : no derivational variants -e --exclude_sources <sourcelist> : exclude semantic types -g --allow_concept_gaps : allow concept gaps -i --ignore_word_order : ignore word order -k --exclude_sts <semtypelist> : exclude semantic types -l --allow_large_n : allow Large N -o --allow_overmatches : allow overmatches -r --threshold <integer> : Threshold for displaying candidates. -y --word_sense_disambiguation : use WSD -z --term_processing : use term processing 7.3 Performing a query using the api List<Result> resultlist = api.processcitationsfromstring(terms); 7.4 Interrogating the result 7.4.1 Getting Acronyms and Abbreviations To get a list of all the acronyms and abbreviations occurring in the input text use the instance method Result.getAcronymsAbbrevs: Result result = resultlist.get(0); List<AcronymsAbbrevs> aalist = result.getacronymsabbrevs(); if (aalist.size() > 0) { Acronyms and Abbreviations:"); for (AcronymsAbbrevs e: aalist) { Acronym: " + e.getacronym()); Expansion: " + e.getexpansion()); Count list: " + e.getcountlist()); CUI list: " + e.getcuilist()); else { None."); 7.4.2 Getting Negations To get a list of all the negated concepts in the input text use the instance method Result.getNegations: List<Negation> neglist = result.getnegations(); if (neglist.size() > 0) { Negations:"); for (Negation e: neglist) { type: " + e.gettype()); System.out.print("Trigger: " + e.gettrigger() + ": ["); for (Position pos: e.gettriggerpositionlist()) {

7 USING THE API 9 System.out.print(pos + ","); ]"); System.out.print("ConceptPairs: ["); for (ConceptPair pair: e.getconceptpairlist()) { System.out.print(pair + ","); ]"); System.out.print("ConceptPositionList: ["); for (Position pos: e.getconceptpositionlist()) { System.out.print(pos + ","); ]"); else { None."); 7.4.3 Getting Utterances and Associated Phrases, Candidates, and Mappings The instance method Result.getUtteranceList() produces a list of the utterances present in the result: for (Utterance utterance: result.getutterancelist()) { Utterance:"); Id: " + utterance.getid()); Utterance text: " + utterance.getstring()); Position: " + utterance.getposition()); To get the list of phrases, candidates, and mappings associated with an utterance use the instance method Utterance.getPCMList: for (PCM pcm: utterance.getpcmlist()) { Each phrase, and the list of candidates and mappings associated with the phrase are encapsulated within a PCM instance. Use PCM.getPhrase to get the phrase instance residing within the PCM instance: Phrase:"); text: " + pcm.getphrase().getphrasetext()); Similarly, get the candidate list using PCM.getCandidateList(): Candidates:"); for (Ev ev: pcm.getcandidatelist()) { "); Score: " + ev.getscore());

7 USING THE API 10 Concept Id: " + ev.getconceptid()); Concept Name: " + ev.getconceptname()); Preferred Name: " + ev.getpreferredname()); Matched Words: " + ev.getmatchedwords()); Semantic Types: " + ev.getsemantictypes()); MatchMap: " + ev.getmatchmap()); MatchMap alt. repr.: " + ev.getmatchmaplist()); is Head?: " + ev.ishead()); is Overmatch?: " + ev.isovermatch()); Sources: " + ev.getsources()); Positional Info: " + ev.getpositionalinfo()); One can get the mappings list from the PCM instance using PCM.getMappingList: Mappings:"); for (Mapping map: pcm.getmappinglist()) { Map Score: " + map.getscore()); for (Ev mapev: map.getevlist()) { Score: " + mapev.getscore()); Concept Id: " + mapev.getconceptid()); Concept Name: " + mapev.getconceptname()); Preferred Name: " + mapev.getpreferredname()); Matched Words: " + mapev.getmatchedwords()); Semantic Types: " + mapev.getsemantictypes()); MatchMap: " + mapev.getmatchmap()); MatchMap alt. repr.: " + mapev.getmatchmaplist()); is Head?: " + mapev.ishead()); is Overmatch?: " + mapev.isovermatch()); Sources: " + mapev.getsources()); Positional Info: " + mapev.getpositionalinfo()); Refer to the API javadoc for more information on the available methods for each interface. A complete example of this code is in src/javaapi/sources/gov/nih/nlm/nls/metamap/metamapapitest.java. 7.5 Getting Raw MetaMap Machine Output A copy of the raw MetaMap machine output can be obtained by using the instance method Result.getMachineOutput: List<Result> resultlist = api.processcitationsfromstring(terms); Result result = resultlist.get(0); String machineoutput = result.getmachineoutput();

8 ADVANCED CONFIGURATION 11 8 Advanced Configuration 8.1 Accepting the client connections from remote hosts To allow the MetaMap server to accept connections from clients on a host other than localhost (127.0.0.1, the default) modify the environment variable ACCEPTED HOSTS the script public mm/bin/skrrun.11 to contain all of the client hosts you wish to have access to the MetaMap server. For example, change the entry: ACCEPTED_HOSTS="[ 127.0.0.1 ]" export ACCEPTED_HOSTS to: ACCEPTED_HOSTS="[ 127.0.0.1, 192.168.111.27, 192.168.111.61, 192.168.111.76 ]" export ACCEPTED_HOSTS all of the entries must be ip-addresses, hostnames will not work. 8.2 Running the MetaMap server on an alternate port To run the MetaMap server on a port other than the default port (8066) modify the environment variable MMSERVER PORT in the script public mm/bin/skrrun.{2-digit-year. E.G. to change the port to 8888: MMSERVER_PORT=8888 export MMSERVER_PORT 8.3 Specifying alternate MetaMap Server hosts and ports in the API The MetaMap Java API now includes the methods sethost and setport to specify the host and port locations of the MetaMap server. The source to the class gov.nih.nlm.nls.metamap.metamapapitest (public mm/src/javaapi/sources/gov/nih/nlm/nls/metamap/ MetaMapApiTest.java) contains an example of the use of these methods. 9 Location of jar files The jar files used by the Java API are in the following locations:./public_mm/src/javaapi/dist/metamapapi.jar./public_mm/src/javaapi/dist/prologbeans.jar

10 NOTES FOR MAVEN USERS 12 10 Notes for Maven Users To install the MetaMap api and its supporting libraries use the following commands: First install PrologBeans: $ mvn install:install-file \ -Dfile=<parent>/public_mm/src/javaapi/dist/prologbeans.jar \ -DgroupId=se.sics -DartifactId=prologbeans -Dversion=4.2.1 \ -Dpackaging=jar Then install MetaMap API: $ cd <parent>/public_mm/src/javaapi $ mvn install 11 What is missing from the API The server sorely needs support for dealing with internal exceptions gracefully when processing options and input text. 12 The MetaMap UIMA Annotator A UIMA Annotator that uses an underlying MetaMapApi instance is available (see http://metamap. nlm.nih.gov/#metamapuima). More information about UIMA project can be found at the Apache UIMA project Page, http://uima.apache.org/. 13 Possible enhancements Possible enchancments include providing a factory method for instantiating MetaMapApi instances, and providing instantiation of instances through JNDI. A mechanism for querying the Prolog Server to determine which options are available and how to use them. 14 Differences compared to MMTx API The MetaMap Java API only provides access to components available through machine output. That includes The Final mappings, the Candidates, Phrases, Utterances, Negated Concepts, and Acronyms and Abbreviations. Access to structures such as lexical elements and tokenization that were available in the eariler MMTx API are not currently available in the MetaMap API. 15 Windows XP/7 differences The primary differences are: Batch equivalents are supplied for the supplied programs on Windows (metamap{version.bat, mmserver{version.bat, skrmedpostctl start.bat, wsdserverctl start.bat, and testapi.bat).

16 FOR MORE INFORMATION 13 16 For more information SICStus Prolog http://www.sics.se/sicstus/ PrologBeans Docs http://www.sics.se/sicstus/docs/latest4/html/sicstus.html PrologBeans Java API Docs http://www.sics.se/sicstus/docs/3.12.9/html/prologbeans/ MetaMap http://metamap.nlm.nih.gov/