Ontology Recommender Client Examples
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Production Web service clients
- Perl client: https://bmir-gforge.stanford.edu/gf/project/client_examples/scmsvn/?action=browse&path=%2Ftrunk%2FPerl%2FOntologyRecommender%2F
- Java client: https://bmir-gforge.stanford.edu/gf/project/client_examples/scmsvn/?action=browse&path=%2Ftrunk%2FJava%2FOntologyRecommender%2F
- Clients may be accessed via "anonymous" SVN. For more details, see: https://bmir-gforge.stanford.edu/gf/project/client_examples/scmsvn/?action=AccessInfo
# PROTOTYPE Perl Client Example use strict; use LWP::UserAgent; use URI::Escape; use XML::LibXML; $| = 1; my $RecommenderURL = 'http://ncbolabs-dev2.stanford.edu:8080/OBS_v1/recommender1.1/'; #TODO: Replace with production web service signature when available for production # Sample text my $text = uri_escape( "Melanoma is a malignant tumor of melanocytes which are found predominantly in skin but also in the bowel and the eye" ); # create a user agent my $ua = new LWP::UserAgent; # create a parse to handle the output my $parser = XML::LibXML->new(); # create a POST request my $req = new HTTP::Request POST => "$RecommenderURL"; $req->content_type('application/x-www-form-urlencoded'); # Set parameters $req->content( "method=1&" #values: 1, 2, 3, 4 . "output=score&" #values: score, nb-annotating-concepts, normalized-score, overlap . "respository=ncbo&" #values: ncbo, umls, all . "text=$text&" . "format=xml&" #values: asText, asTextSimple, asXML . "email=testClient\@NCBO.org" ); # send request and get response my $res = $ua->request($req); # Check the outcome of the response if ( $res->is_success ) { print STDERR "Successful Response...\n"; my $time = localtime(); print "Call successful at $time\n"; print $res->decoded_content; } else { my $time = localtime(); print $res->status_line, " at $time\n"; } sub ParseOBAResponse { print STDERR "Parsing response\n"; my ( $res, $parser ) = @_; my $dom = $parser->parse_string( $res->decoded_content ); my $root = $dom->getDocumentElement(); my %MatchedConcepts; my %MatchedPhrase; my $results = $root->findnodes( '/success/data/annotatorResultBean/annotations/annotationBean/concept'); foreach my $c_node ( $results->get_nodelist ) { # Sample XPATH to extract concept info if needed print "ID = ", $c_node->findvalue('localConceptId'), "\n"; print "Name = ", $c_node->findvalue('preferredName'), "\n"; print "Type = ", $c_node->findvalue( './semanticTypes/semanticTypeBean[1]/localSemanticTypeId'), "\n"; print "Type name = ", $c_node->findvalue('./semanticTypes/semanticTypeBean[1]/name'), "\n\n"; $MatchedConcepts{ $c_node->findvalue('localConceptId') } = $c_node->findvalue('preferredName'); } my $results = $root->findnodes( '/success/data/annotatorResultBean/annotations/annotationBean/context'); foreach my $c_node ( $results->get_nodelist ) { # Sample XPATH to extract concept info if needed print "ID = ", $c_node->findvalue('./term/localConceptId'), "\n"; print "Match = ", $c_node->findvalue('./term/name'), "\n"; print "From = ", $c_node->findvalue('from'), "\n"; print "To = ", $c_node->findvalue('to'), "\n"; $MatchedPhrase{ $c_node->findvalue('./term/localConceptId') } = $c_node->findvalue('./term/name'); } return ( \%MatchedConcepts, \%MatchedPhrase ); }