Tuesday, April 24, 2007

The National Biological Information Infrastructure (NBII) Dreft web service for the Biocomplexity Thesaurus

pencil icon, that"s clickable to start editing the post

As the heavyweight title says I've found a real web service. In my last post called Finally a webservice: DREFT and SKOS for Thesaurus I found the DREFT interface but the prototype service was not available anymore. I searched the web and found version running at NBII (The National Biological Information Infrastructure). It's a long and complex title, so what is it About (my highlighting):

The National Biological Information Infrastructure (NBII) is a broad, collaborative program to provide increased access to data and information on the nation's biological resources. The NBII links diverse, high-quality biological databases, information products, and analytical tools maintained by NBII partners and other contributors in government agencies, academic institutions, non-government organizations, and private industry. NBII partners and collaborators also work on new standards, tools, and technologies that make it easier to find, integrate, and apply biological resources information. Resource managers, scientists, educators, and the general public use the NBII to answer a wide range of questions related to the management, use, or conservation of this nation's biological resources.

Excellent and keep up the good work. These fine folks have the Biocomplexity Thesaurus Project and the gem for me is a Web Service for the Biocomplexity Thesaurus - hooray.

I haven't compared the two wsdl's (SWSD wsdl and NBII wsdl) in detail but the look very similar. I was eager to give it a shot so i prepared Axis2 and ran WSDL2Code (earlier called WSDL2Java), but it only resulted in the following error message: Encoded use is not supported, ups darn compliance. If I remember correct Encoded is banned by WS-I, so it hasn't been a priority for the Axis2 team. Back to Axis1 and the latest release, since I haven't used Axis1 for some time but I have used it for encoded services, and also the DREFT service that can be downloaded (haven't worked with it yet) was based on Axis1. I run through axis-wsdl2java without a problem, and was ready to write my first client. Well ready it not the best word for it since I have very little knowledge about neither DREFT/SKOS/RDF or the Biocomplexity Thesaurus, just with writing webservice clients. I looked for what sound the simplest and found getConceptResultsByKeyword that takes two parameters: keyword/search term as a string and the uri of the thesaurus service - uhmm what uri and why, I thought this service implementation was for a specific thesaurus? weell it turns out to be ignored, so it can be any value or null/nil. These to overloaded operations (naughty naughty) are sort of convenience methods added here, that's not part of the original DREFT service.

Search for malformations

On the search tips page the example is malformations. Here what the HTTP headers for the request looks like :

    1 POST /ws/services/SKOSThesaurusService HTTP/1.0
    2 Content-Type: text/xml; charset=utf-8
    3 Accept: application/soap+xml, application/dime, multipart/related, text/*
    4 User-Agent: Axis/1.4
    5 Host: nbii-thesaurus.ornl.gov:9999
    6 Cache-Control: no-cache
    7 Pragma: no-cache
    8 SOAPAction: ""
    9 Content-Length: 840

Notice that I'm capturing this with TCPMon on port 9999. Any heres the request SOAP message (malformations-request.xml):

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <soapenv:Envelope
    3   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    4   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    5   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    6   <soapenv:Body>
    7     <ns1:getConceptResultsByKeyword
    8       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    9       xmlns:ns1="http://skos.Europe.sw.y2001.w3.org">
   10       <in0 xsi:type="xsd:string">malformations</in0>
   11       <in1 href="#id0" />
   12     </ns1:getConceptResultsByKeyword>
   13     <multiRef
   14       id="id0"
   15       soapenc:root="0"
   16       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   17       xsi:type="ns2:URI"
   18       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
   19       xmlns:ns2="http://www.w3.org/2001/sw/Europe/skos/namespace">
   20       <uri xsi:type="xsd:string">http://localhost:9999/ws/services/SKOSThesaurusService</uri>
   21     </multiRef>
   22   </soapenv:Body>
   23 </soapenv:Envelope>

This is readable (RPC style), and the response HTTP headers:

    1 HTTP/1.1 200 OK
    2 Connection: close
    3 Date: Fri, 20 Apr 2007 20:29:41 GMT
    4 Server: Microsoft-IIS/6.0
    5 X-Powered-By: ASP.NET
    6 Content-Type: text/xml;charset=utf-8

So this could look like a .NET implementation, but it is an Axis1 service (the service page (GET) has the classic "Hi there, this is an AXIS service! Perhaps there will be a form for invoking the service here...". The response SOAP message is, well terrible as in unreadable for humans due to all the references. It's also very long (approximately 1000 lines) so I'll cut it short (malformations-response.xml):

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <soapenv:Envelope
    3   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    4   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    5   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    6   <soapenv:Body>
    7     <ns1:getConceptResultsByKeywordResponse
    8       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    9       xmlns:ns1="http://skos.Europe.sw.y2001.w3.org">
   10       <ns1:getConceptResultsByKeywordReturn
   11         xsi:type="soapenc:Array"
   12         soapenc:arrayType="ns2:ConceptResult[2]"
   13         xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
   14         xmlns:ns2="http://www.w3.org/2001/sw/Europe/skos/namespace">
   15         <item href="#id0" />
   16         <item href="#id1" />
   17       </ns1:getConceptResultsByKeywordReturn>
   18     </ns1:getConceptResultsByKeywordResponse>
   19     <multiRef
   20       id="id0"
   21       soapenc:root="0"
   22       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   23       xsi:type="ns3:ConceptResult"
   24       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
   25       xmlns:ns3="http://www.w3.org/2001/sw/Europe/skos/namespace">
   26       <conceptRelatives
   27         xsi:type="soapenc:Array"
   28         soapenc:arrayType="ns3:ConceptRelatives[5]">
   29         <item href="#id2" />
   30         <item xsi:nil="true" />
   31         <item href="#id3" />
   32         <item href="#id4" />
   33         <item xsi:nil="true" />
   34       </conceptRelatives>
   35       <concept href="#id5" />
   36     </multiRef>
   37     <multiRef
   38       id="id1"
   39       soapenc:root="0"
   40       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   41       xsi:type="ns4:ConceptResult"
   42       xmlns:ns4="http://www.w3.org/2001/sw/Europe/skos/namespace"
   43       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   44       <conceptRelatives
   45         xsi:type="soapenc:Array"
   46         soapenc:arrayType="ns4:ConceptRelatives[5]">
   47         <item xsi:nil="true" />
   48         <item href="#id6" />
   49         <item href="#id7" />
   50         <item href="#id8" />
   51         <item href="#id9" />
   52       </conceptRelatives>
   53       <concept href="#id10" />
   54     </multiRef>
   55     <multiRef
   56       id="id5"
   57       soapenc:root="0"
   58       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   59       xsi:type="ns5:Concept"
   60       xmlns:ns5="http://www.w3.org/2001/sw/Europe/skos/namespace"
   61       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   62       <uri href="#id11" />
   63       <externalID
   64         xsi:type="xsd:string"
   65         xsi:nil="true" />
   66       <preferredLabel xsi:type="xsd:string">Limb malformations</preferredLabel>
   67       <inScheme
   68         xsi:type="ns5:URI"
   69         xsi:nil="true" />
   70       <scopeNote
   71         xsi:type="xsd:string"
   72         xsi:nil="true" />
   73       <definition
   74         xsi:type="xsd:string"
   75         xsi:nil="true" />
   76       <example
   77         xsi:type="xsd:string"
   78         xsi:nil="true" />
   79     </multiRef>
   80     <multiRef
   81       id="id2"
   82       soapenc:root="0"
   83       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   84       xsi:type="ns6:ConceptRelatives"
   85       xmlns:ns6="http://www.w3.org/2001/sw/Europe/skos/namespace"
   86       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   87       <distance xsi:type="xsd:int">1</distance>
   88       <concepts href="#id12" />
   89       <relation href="#id13" />
   90     </multiRef>
   91     <multiRef
   92       id="id9"
   93       soapenc:root="0"
   94       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   95       xsi:type="ns7:ConceptRelatives"
   96       xmlns:ns7="http://www.w3.org/2001/sw/Europe/skos/namespace"
   97       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   98       <distance xsi:type="xsd:int">1</distance>
   99       <concepts href="#id14" />
  100       <concepts href="#id15" />

  101       <concepts href="#id16" />
  102       <relation href="#id17" />
  103     </multiRef>

  104     <multiRef
  105       id="id7"
  106       soapenc:root="0"
  107       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  108       xsi:type="ns8:ConceptRelatives"
  109       xmlns:ns8="http://www.w3.org/2001/sw/Europe/skos/namespace"
  110       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  111       <distance xsi:type="xsd:int">1</distance>
  112       <concepts href="#id18" />
  113       <concepts href="#id19" />
  114       <concepts href="#id20" />
  115       <relation href="#id17" />
  116     </multiRef>
  117     <multiRef
  118       id="id3"
  119       soapenc:root="0"
  120       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  121       xsi:type="ns9:ConceptRelatives"
  122       xmlns:ns9="http://www.w3.org/2001/sw/Europe/skos/namespace"
  123       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  124       <distance xsi:type="xsd:int">1</distance>
  125       <concepts href="#id21" />
  126       <relation href="#id13" />
  127     </multiRef>
  128     <multiRef
  129       id="id4"
  130       soapenc:root="0"
  131       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  132       xsi:type="ns10:ConceptRelatives"
  133       xmlns:ns10="http://www.w3.org/2001/sw/Europe/skos/namespace"
  134       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  135       <distance xsi:type="xsd:int">1</distance>
  136       <concepts href="#id22" />
  137       <relation href="#id13" />
  138     </multiRef>
  139     <multiRef
  140       id="id6"
  141       soapenc:root="0"
  142       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  143       xsi:type="ns11:ConceptRelatives"
  144       xmlns:ns11="http://www.w3.org/2001/sw/Europe/skos/namespace"
  145       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  146       <distance xsi:type="xsd:int">1</distance>
  147       <concepts href="#id23" />
  148       <concepts href="#id24" />
  149       <concepts href="#id25" />
  150       <concepts href="#id26" />
  151       <concepts href="#id27" />
  152       <concepts href="#id28" />
  153       <concepts href="#id29" />
  154       <concepts href="#id30" />
  155       <concepts href="#id31" />
  156       <concepts href="#id32" />
  157       <concepts href="#id33" />
  158       <relation href="#id17" />
  159     </multiRef>
  160     <multiRef
  161       id="id10"
  162       soapenc:root="0"
  163       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  164       xsi:type="ns12:Concept"
  165       xmlns:ns12="http://www.w3.org/2001/sw/Europe/skos/namespace"
  166       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  167       <uri href="#id34" />
  168       <externalID
  169         xsi:type="xsd:string"
  170         xsi:nil="true" />
  171       <preferredLabel xsi:type="xsd:string">Malformations</preferredLabel>
  172       <inScheme
  173         xsi:type="ns12:URI"
  174         xsi:nil="true" />
  175       <scopeNote xsi:type="xsd:string">Restricted to living organisms.</scopeNote>
  176       <definition
  177         xsi:type="xsd:string"
  178         xsi:nil="true" />
  179       <example
  180         xsi:type="xsd:string"
  181         xsi:nil="true" />
  182     </multiRef>
  183     <multiRef
  184       id="id8"
  185       soapenc:root="0"
  186       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  187       xsi:type="ns13:ConceptRelatives"
  188       xmlns:ns13="http://www.w3.org/2001/sw/Europe/skos/namespace"
  189       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  190       <distance xsi:type="xsd:int">1</distance>
  191       <concepts href="#id35" />
  192       <concepts href="#id36" />
  193       <relation href="#id17" />
  194     </multiRef>
  195     <multiRef
  196       id="id30"
  197       soapenc:root="0"
  198       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  199       xsi:type="ns14:Concept"
  200       xmlns:ns14="http://www.w3.org/2001/sw/Europe/skos/namespace"
  201       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  202       <uri href="#id37" />
  203       <externalID
  204         xsi:type="xsd:string"
  205         xsi:nil="true" />
  206       <preferredLabel xsi:type="xsd:string">Translocation (genetics)</preferredLabel>
  207       <inScheme
  208         xsi:type="ns14:URI"
  209         xsi:nil="true" />
  210       <scopeNote
  211         xsi:type="xsd:string"
  212         xsi:nil="true" />
  213       <definition
  214         xsi:type="xsd:string"
  215         xsi:nil="true" />
  216       <example
  217         xsi:type="xsd:string"
  218         xsi:nil="true" />
  219     </multiRef>
  220     <multiRef
  221       id="id31"
  222       soapenc:root="0"
  223       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  224       xsi:type="ns15:Concept"
  225       xmlns:ns15="http://www.w3.org/2001/sw/Europe/skos/namespace"
  226       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  227       <uri href="#id38" />
  228       <externalID
  229         xsi:type="xsd:string"
  230         xsi:nil="true" />
  231       <preferredLabel xsi:type="xsd:string">Neural tube defects</preferredLabel>
  232       <inScheme
  233         xsi:type="ns15:URI"
  234         xsi:nil="true" />
  235       <scopeNote
  236         xsi:type="xsd:string"
  237         xsi:nil="true" />
  238       <definition
  239         xsi:type="xsd:string"
  240         xsi:nil="true" />
  241       <example
  242         xsi:type="xsd:string"
  243         xsi:nil="true" />
  244     </multiRef>
  245     <multiRef
  246       id="id32"
  247       soapenc:root="0"
  248       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  249       xsi:type="ns16:Concept"
  250       xmlns:ns16="http://www.w3.org/2001/sw/Europe/skos/namespace"
  251       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  252       <uri href="#id39" />
  253       <externalID
  254         xsi:type="xsd:string"
  255         xsi:nil="true" />
  256       <preferredLabel xsi:type="xsd:string">Genetic abnormalities</preferredLabel>
  257       <inScheme
  258         xsi:type="ns16:URI"
  259         xsi:nil="true" />
  260       <scopeNote
  261         xsi:type="xsd:string"
  262         xsi:nil="true" />
  263       <definition
  264         xsi:type="xsd:string"
  265         xsi:nil="true" />
  266       <example
  267         xsi:type="xsd:string"
  268         xsi:nil="true" />
  269     </multiRef>
  270     <multiRef
  271       id="id21"
  272       soapenc:root="0"
  273       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  274       xsi:type="ns17:Concept"
  275       xmlns:ns17="http://www.w3.org/2001/sw/Europe/skos/namespace"
  276       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  277       <uri href="#id40" />
  278       <externalID
  279         xsi:type="xsd:string"
  280         xsi:nil="true" />
  281       <preferredLabel xsi:type="xsd:string">Limb (animal)</preferredLabel>
  282       <inScheme
  283         xsi:type="ns17:URI"
  284         xsi:nil="true" />
  285       <scopeNote
  286         xsi:type="xsd:string"
  287         xsi:nil="true" />
  288       <definition
  289         xsi:type="xsd:string"
  290         xsi:nil="true" />
  291       <example
  292         xsi:type="xsd:string"
  293         xsi:nil="true" />
  294     </multiRef>
  295     <multiRef
  296       id="id14"
  297       soapenc:root="0"
  298       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  299       xsi:type="ns18:Concept"
  300       xmlns:ns18="http://www.w3.org/2001/sw/Europe/skos/namespace"
  301       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  302       <uri href="#id41" />
  303       <externalID
  304         xsi:type="xsd:string"
  305         xsi:nil="true" />
  306       <preferredLabel xsi:type="xsd:string">Abnormalities</preferredLabel>
  307       <nonPreferredLabels xsi:type="xsd:string">Malformations</nonPreferredLabels>
  308       <inScheme
  309         xsi:type="ns18:URI"
  310         xsi:nil="true" />
  311       <scopeNote
  312         xsi:type="xsd:string"
  313         xsi:nil="true" />
  314       <definition
  315         xsi:type="xsd:string"
  316         xsi:nil="true" />
  317       <example
  318         xsi:type="xsd:string"
  319         xsi:nil="true" />
  320     </multiRef>
  321     <multiRef
  322       id="id28"
  323       soapenc:root="0"
  324       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  325       xsi:type="ns19:Concept"
  326       xmlns:ns19="http://www.w3.org/2001/sw/Europe/skos/namespace"
  327       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  328       <uri href="#id42" />
  329       <externalID
  330         xsi:type="xsd:string"
  331         xsi:nil="true" />
  332       <preferredLabel xsi:type="xsd:string">Nondisjunction</preferredLabel>
  333       <inScheme
  334         xsi:type="ns19:URI"
  335         xsi:nil="true" />
  336       <scopeNote
  337         xsi:type="xsd:string"
  338         xsi:nil="true" />
  339       <definition
  340         xsi:type="xsd:string"
  341         xsi:nil="true" />
  342       <example
  343         xsi:type="xsd:string"
  344         xsi:nil="true" />
  345     </multiRef>
  346     <multiRef
  347       id="id36"
  348       soapenc:root="0"
  349       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  350       xsi:type="ns20:Concept"
  351       xmlns:ns20="http://www.w3.org/2001/sw/Europe/skos/namespace"
  352       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  353       <uri href="#id43" />
  354       <externalID
  355         xsi:type="xsd:string"
  356         xsi:nil="true" />
  357       <preferredLabel xsi:type="xsd:string">LSC</preferredLabel>
  358       <inScheme
  359         xsi:type="ns20:URI"
  360         xsi:nil="true" />
  361       <scopeNote
  362         xsi:type="xsd:string"
  363         xsi:nil="true" />
  364       <definition
  365         xsi:type="xsd:string"
  366         xsi:nil="true" />
  367       <example
  368         xsi:type="xsd:string"
  369         xsi:nil="true" />
  370     </multiRef>
  371     <multiRef
  372       id="id18"
  373       soapenc:root="0"
  374       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  375       xsi:type="ns21:Concept"
  376       xmlns:ns21="http://www.w3.org/2001/sw/Europe/skos/namespace"
  377       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  378       <uri href="#id44" />
  379       <externalID
  380         xsi:type="xsd:string"
  381         xsi:nil="true" />
  382       <preferredLabel xsi:type="xsd:string">Teratogenesis</preferredLabel>
  383       <inScheme
  384         xsi:type="ns21:URI"
  385         xsi:nil="true" />
  386       <scopeNote
  387         xsi:type="xsd:string"
  388         xsi:nil="true" />
  389       <definition
  390         xsi:type="xsd:string"
  391         xsi:nil="true" />
  392       <example
  393         xsi:type="xsd:string"
  394         xsi:nil="true" />
  395     </multiRef>
  396     <multiRef
  397       id="id34"
  398       soapenc:root="0"
  399       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  400       xsi:type="ns22:URI"
  401       xmlns:ns22="http://www.w3.org/2001/sw/Europe/skos/namespace"
  402       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  403       <uri xsi:type="xsd:string">http://thesaurus.nbii.gov/Concept/5093</uri>
  404     </multiRef>
  405     <multiRef
  406       id="id20"
  407       soapenc:root="0"
  408       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  409       xsi:type="ns23:Concept"
  410       xmlns:ns23="http://www.w3.org/2001/sw/Europe/skos/namespace"
  411       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  412       <uri href="#id45" />
  413       <externalID
  414         xsi:type="xsd:string"
  415         xsi:nil="true" />
  416       <preferredLabel xsi:type="xsd:string">Teratogens</preferredLabel>

  417       <inScheme
  418         xsi:type="ns23:URI"
  419         xsi:nil="true" />

  420       <scopeNote xsi:type="xsd:string">Agents that raise the incidence of congenital malformations</scopeNote>
  421       <definition
  422         xsi:type="xsd:string"

  423         xsi:nil="true" />
  424       <example
  425         xsi:type="xsd:string"

  426         xsi:nil="true" />
  427     </multiRef>
  428     <multiRef

  429       id="id26"
  430       soapenc:root="0"
  431       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

  432       xsi:type="ns24:Concept"
  433       xmlns:ns24="http://www.w3.org/2001/sw/Europe/skos/namespace"
  434       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

  435       <uri href="#id46" />
  436       <externalID
  437         xsi:type="xsd:string"

  438         xsi:nil="true" />
  439       <preferredLabel xsi:type="xsd:string">Congenital defects</preferredLabel>
  440       <inScheme

  441         xsi:type="ns24:URI"
  442         xsi:nil="true" />
  443       <scopeNote

  444         xsi:type="xsd:string"
  445         xsi:nil="true" />
  446       <definition

  447         xsi:type="xsd:string"
  448         xsi:nil="true" />
  449       <example

  450         xsi:type="xsd:string"
  451         xsi:nil="true" />
  452     </multiRef>

  453     <multiRef
  454       id="id19"
  455       soapenc:root="0"

  456       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  457       xsi:type="ns25:Concept"
  458       xmlns:ns25="http://www.w3.org/2001/sw/Europe/skos/namespace"

  459       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  460       <uri href="#id47" />
  461       <externalID

  462         xsi:type="xsd:string"
  463         xsi:nil="true" />
  464       <preferredLabel xsi:type="xsd:string">Teratology</preferredLabel>

  465       <inScheme
  466         xsi:type="ns25:URI"
  467         xsi:nil="true" />

  468       <scopeNote xsi:type="xsd:string">
  469         Science treating malformations and monstrosities of plants and animals.
  470       </scopeNote>
  471       <definition

  472         xsi:type="xsd:string"
  473         xsi:nil="true" />
  474       <example

  475         xsi:type="xsd:string"
  476         xsi:nil="true" />
  477     </multiRef>

  478     <multiRef
  479       id="id29"
  480       soapenc:root="0"

  481       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  482       xsi:type="ns26:Concept"
  483       xmlns:ns26="http://www.w3.org/2001/sw/Europe/skos/namespace"

  484       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  485       <uri href="#id48" />
  486       <externalID

  487         xsi:type="xsd:string"
  488         xsi:nil="true" />
  489       <preferredLabel xsi:type="xsd:string">Ring chromosomes</preferredLabel>

  490       <inScheme
  491         xsi:type="ns26:URI"
  492         xsi:nil="true" />

  493       <scopeNote
  494         xsi:type="xsd:string"
  495         xsi:nil="true" />

  496       <definition
  497         xsi:type="xsd:string"
  498         xsi:nil="true" />

  499       <example
  500         xsi:type="xsd:string"
  501         xsi:nil="true" />

  502     </multiRef>
...
  981     <multiRef
  982       id="id43"
  983       soapenc:root="0"
  984       soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  985       xsi:type="ns61:URI"
  986       xmlns:ns61="http://www.w3.org/2001/sw/Europe/skos/namespace"
  987       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  988       <uri xsi:type="xsd:string">http://thesaurus.nbii.gov/Concept/9560</uri>
  989     </multiRef>
  990   </soapenv:Body>
  991 </soapenv:Envelope>

So was there anything missing? I don't know :-). Had this been doc/lit the XML would have been more plain readable witch is one thing but what about the data model itself? I guess it's almost pure SKOS, but remember I really do not know anything about it, and I'm using this service to get som insight into it.

The schema in the WSDL is what I sometime call a Rag doll schema's since it is very loose. There is very little mandatory content and therefore I also sometime call them Shopping trolley schema's because they can carry almost anything but you never know what you'll end up leaving with (please bear over with my oversimplifying analogies). Here's the example with Concept:

   42       <complexType name="Concept">
   43         <sequence>
   44           <element
   45             name="uri"
   46             nillable="true"
   47             type="tns1:URI" />
   48           <element
   49             name="externalID"
   50             nillable="true"
   51             type="xsd:string" />
   52           <element
   53             name="preferredLabel"
   54             nillable="true"
   55             type="xsd:string" />
   56           <element
   57             maxOccurs="unbounded"
   58             name="nonPreferredLabels"
   59             nillable="true"
   60             type="xsd:string" />
   61           <element
   62             name="inScheme"
   63             nillable="true"
   64             type="tns1:URI" />
   65           <element
   66             name="scopeNote"
   67             nillable="true"
   68             type="xsd:string" />
   69           <element
   70             name="definition"
   71             nillable="true"
   72             type="xsd:string" />
   73           <element
   74             name="example"
   75             nillable="true"
   76             type="xsd:string" />
   77         </sequence>
   78       </complexType>

This gives a span from a complete filled structure to a bunch of empty elements with xsd:nil="true". I personal prefer minoccurs="0"> over the nillable construct, giving a smaller and more exact markup. There certainly are models that need this kind of total flexibility, but on occasion it's a bad smell. Going into invariants is way over my league, so I'll just have a look and expect that this metadata stuff probably has to be that lax.

Since I have no domain knowledgde I know only what the schemas shows me, and that's not much, so I'll have a second look at the response instance. But how do I make that easier to decipher? My first try is with the J2SE XMLEncoder, here's a snippet from j2se-malformations.xml:

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <java version="1.5.0_10" class="java.beans.XMLDecoder">
    3  <array class="org.w3.www._2001.sw.Europe.skos.namespace.ConceptResult" length="2">
    4   <void index="0">
    5    <object class="org.w3.www._2001.sw.Europe.skos.namespace.ConceptResult">
    6     <void property="concept">
    7      <object class="org.w3.www._2001.sw.Europe.skos.namespace.Concept">
    8       <void property="preferredLabel">
    9        <string>Limb malformations</string>
   10       </void>
   11       <void property="uri">
   12        <object class="org.w3.www._2001.sw.Europe.skos.namespace.URI">
   13         <void property="uri">
   14          <string>http://thesaurus.nbii.gov/Concept/4896</string>
   15         </void>
   16        </object>
   17       </void>
   18      </object>
   19     </void>
   20     <void property="conceptRelatives">
   21      <array class="org.w3.www._2001.sw.Europe.skos.namespace.ConceptRelatives" length="5">
   22       <void index="0">
   23        <object class="org.w3.www._2001.sw.Europe.skos.namespace.ConceptRelatives">
   24         <void property="concepts">
   25          <array class="org.w3.www._2001.sw.Europe.skos.namespace.Concept" length="1">
   26           <void index="0">
   27            <object class="org.w3.www._2001.sw.Europe.skos.namespace.Concept">
   28             <void property="preferredLabel">
   29              <string>Malformations</string>
   30             </void>
   31             <void property="scopeNote">
   32              <string>Restricted to living organisms.</string>
   33             </void>
   34             <void property="uri">
   35              <object class="org.w3.www._2001.sw.Europe.skos.namespace.URI">
   36               <void property="uri">
   37                <string>http://thesaurus.nbii.gov/Concept/5093</string>
   38               </void>
   39              </object>
   40             </void>
   41            </object>
   42           </void>
   43          </array>
   44         </void>

Okay, this is almost worse and never meant to be beautiful XML serialization, but let's try a more likely candidate: Jakarta Commons Betwixt. As it says on the front page Commons Betwixt : Turning beans into XML:

The Betwixt library provides an XML introspection mechanism for mapping beans to XML in a flexible way. It is implemented using an XMLIntrospector and XMLBeanInfo classes which are similar to the standard Introspector and BeanInfo from the Java Beans specification.

Betwixt provides a way of turning beans into XML as well as automatically generating digester rules in a way that can be customized on a per type manner in the same way that the BeanInfo mechanism can be used to customize the default introspection on a java object.

An a quick shot at it gives (btx-malformations.xml):

    1   <Array>

    2     <ConceptResult>
    3       <concept>
    4         <definition/>
    5         <example/>

    6         <externalID/>
    7         <nonPreferredLabels/>
    8         <preferredLabel>Limb malformations</preferredLabel>

    9         <scopeNote/>
   10         <uri>
   11           <uri>http://thesaurus.nbii.gov/Concept/4896</uri>

   12         </uri>
   13       </concept>
   14       <conceptRelatives>
   15         <ConceptRelatives>

   16           <concepts>
   17             <Concept>
   18               <definition/>
   19               <example/>

   20               <externalID/>
   21               <nonPreferredLabels/>
   22               <preferredLabel>Malformations</preferredLabel>

   23               <scopeNote>Restricted to living organisms.</scopeNote>
   24               <uri>
   25                 <uri>http://thesaurus.nbii.gov/Concept/5093</uri>

   26               </uri>
   27             </Concept>
   28           </concepts>
   29           <distance>1</distance>

   30           <relation>
   31             <description/>
   32             <label>http://www.w3.org/2004/02/skos/core#useFor</label>

   33           </relation>
   34         </ConceptRelatives>
   35         <ConceptRelatives>
   36           <concepts>

   37             <Concept>
   38               <definition/>
   39               <example/>
   40               <externalID/>

   41               <nonPreferredLabels/>
   42               <preferredLabel>Limb (animal)</preferredLabel>
   43               <scopeNote/>

   44               <uri>
   45                 <uri>http://thesaurus.nbii.gov/Concept/4894</uri>
   46               </uri>

   47             </Concept>
   48           </concepts>
   49           <distance>1</distance>

   50           <relation>
   51             <description/>
   52             <label>http://www.w3.org/2004/02/skos/core#useFor</label>

   53           </relation>
   54         </ConceptRelatives>
   55         <ConceptRelatives>
   56           <concepts>

   57             <Concept>
   58               <definition/>
   59               <example/>
   60               <externalID/>

   61               <nonPreferredLabels/>
   62               <preferredLabel>LSC</preferredLabel>
   63               <scopeNote/>

   64               <uri>
   65                 <uri>http://thesaurus.nbii.gov/Concept/9560</uri>
   66               </uri>

   67             </Concept>
   68           </concepts>
   69           <distance>1</distance>

   70           <relation>
   71             <description/>
   72             <label>http://www.w3.org/2004/02/skos/core#useFor</label>

   73           </relation>
   74         </ConceptRelatives>
   75       </conceptRelatives>
   76     </ConceptResult>

   77     <ConceptResult>
   78       <concept>
   79         <definition/>
   80         <example/>

   81         <externalID/>
   82         <nonPreferredLabels/>
   83         <preferredLabel>Malformations</preferredLabel>

   84         <scopeNote>Restricted to living organisms.</scopeNote>
   85         <uri>
   86           <uri>http://thesaurus.nbii.gov/Concept/5093</uri>

   87         </uri>
   88       </concept>
   89       <conceptRelatives>
   90         <ConceptRelatives>

   91           <concepts>
   92             <Concept>
   93               <definition/>
   94               <example/>

   95               <externalID/>
   96               <nonPreferredLabels/>
   97               <preferredLabel>Aneuploidy</preferredLabel>

   98               <scopeNote/>
   99               <uri>
  100                 <uri>http://thesaurus.nbii.gov/Concept/409</uri>

  101               </uri>
  102             </Concept>
  103             <Concept>
  104               <definition/>

  105               <example/>
  106               <externalID/>
  107               <nonPreferredLabels/>
  108               <preferredLabel>Chromosome aberrations</preferredLabel>

  109               <scopeNote/>
  110               <uri>
  111                 <uri>http://thesaurus.nbii.gov/Concept/1608</uri>

  112               </uri>
  113             </Concept>
  114             <Concept>
  115               <definition/>

  116               <example/>
  117               <externalID/>
  118               <nonPreferredLabels/>
  119               <preferredLabel>Aristapedia</preferredLabel>

  120               <scopeNote/>
  121               <uri>
  122                 <uri>http://thesaurus.nbii.gov/Concept/611</uri>

  123               </uri>
  124             </Concept>
  125             <Concept>
  126               <definition/>

  127               <example/>
  128               <externalID/>
  129               <nonPreferredLabels/>
  130               <preferredLabel>Congenital defects</preferredLabel>

  131               <scopeNote/>
  132               <uri>
  133                 <uri>http://thesaurus.nbii.gov/Concept/1860</uri>

  134               </uri>
  135             </Concept>
  136             <Concept>
  137               <definition/>

  138               <example/>
  139               <externalID/>
  140               <nonPreferredLabels/>
  141               <preferredLabel>Loss of heterozygosity</preferredLabel>

  142               <scopeNote/>
  143               <uri>
  144                 <uri>http://thesaurus.nbii.gov/Concept/4991</uri>

  145               </uri>
  146             </Concept>
  147             <Concept>
  148               <definition/>
  149               <example/>
  150               <externalID/>
  151               <nonPreferredLabels/>
  152               <preferredLabel>Nondisjunction</preferredLabel>
  153               <scopeNote/>
  154               <uri>
  155                 <uri>http://thesaurus.nbii.gov/Concept/5870</uri>
  156               </uri>
  157             </Concept>
  158             <Concept>
  159               <definition/>
  160               <example/>
  161               <externalID/>
  162               <nonPreferredLabels/>
  163               <preferredLabel>Ring chromosomes</preferredLabel>
  164               <scopeNote/>
  165               <uri>
  166                 <uri>http://thesaurus.nbii.gov/Concept/7481</uri>
  167               </uri>
  168             </Concept>
  169             <Concept>
  170               <definition/>
  171               <example/>
  172               <externalID/>
  173               <nonPreferredLabels/>
  174               <preferredLabel>Translocation (genetics)</preferredLabel>
  175               <scopeNote/>
  176               <uri>
  177                 <uri>http://thesaurus.nbii.gov/Concept/8906</uri>
  178               </uri>
  179             </Concept>
  180             <Concept>
  181               <definition/>
  182               <example/>
  183               <externalID/>
  184               <nonPreferredLabels/>
  185               <preferredLabel>Neural tube defects</preferredLabel>
  186               <scopeNote/>
  187               <uri>
  188                 <uri>http://thesaurus.nbii.gov/Concept/5758</uri>
  189               </uri>
  190             </Concept>
  191             <Concept>
  192               <definition/>
  193               <example/>
  194               <externalID/>
  195               <nonPreferredLabels/>
  196               <preferredLabel>Genetic abnormalities</preferredLabel>
  197               <scopeNote/>
  198               <uri>
  199                 <uri>http://thesaurus.nbii.gov/Concept/3611</uri>
  200               </uri>
  201             </Concept>
  202             <Concept>
  203               <definition/>
  204               <example/>
  205               <externalID/>
  206               <nonPreferredLabels/>
  207               <preferredLabel>Limb malformations</preferredLabel>
  208               <scopeNote/>
  209               <uri>
  210                 <uri>http://thesaurus.nbii.gov/Concept/4896</uri>
  211               </uri>
  212             </Concept>
  213           </concepts>
  214           <distance>1</distance>
  215           <relation>
  216             <description/>
  217             <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  218           </relation>
  219         </ConceptRelatives>
  220         <ConceptRelatives>
  221           <concepts>
  222             <Concept>
  223               <definition/>
  224               <example/>
  225               <externalID/>
  226               <nonPreferredLabels/>
  227               <preferredLabel>Teratogenesis</preferredLabel>
  228               <scopeNote/>
  229               <uri>
  230                 <uri>http://thesaurus.nbii.gov/Concept/8674</uri>
  231               </uri>
  232             </Concept>
  233             <Concept>
  234               <definition/>
  235               <example/>
  236               <externalID/>
  237               <nonPreferredLabels/>
  238               <preferredLabel>Teratology</preferredLabel>
  239               <scopeNote>Science treating malformations and monstrosities of plants and animals.</scopeNote>
  240               <uri>
  241                 <uri>http://thesaurus.nbii.gov/Concept/8677</uri>
  242               </uri>
  243             </Concept>
  244             <Concept>
  245               <definition/>
  246               <example/>
  247               <externalID/>
  248               <nonPreferredLabels/>
  249               <preferredLabel>Teratogens</preferredLabel>
  250               <scopeNote>Agents that raise the incidence of congenital malformations</scopeNote>
  251               <uri>
  252                 <uri>http://thesaurus.nbii.gov/Concept/8676</uri>
  253               </uri>
  254             </Concept>
  255           </concepts>
  256           <distance>1</distance>
  257           <relation>
  258             <description/>
  259             <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  260           </relation>
  261         </ConceptRelatives>
  262         <ConceptRelatives>
  263           <concepts>
  264             <Concept>
  265               <definition/>
  266               <example/>
  267               <externalID/>
  268               <nonPreferredLabels/>
  269               <preferredLabel>ASF</preferredLabel>
  270               <scopeNote/>
  271               <uri>
  272                 <uri>http://thesaurus.nbii.gov/Concept/9558</uri>
  273               </uri>
  274             </Concept>
  275             <Concept>
  276               <definition/>
  277               <example/>
  278               <externalID/>
  279               <nonPreferredLabels/>
  280               <preferredLabel>LSC</preferredLabel>
  281               <scopeNote/>
  282               <uri>
  283                 <uri>http://thesaurus.nbii.gov/Concept/9560</uri>
  284               </uri>
  285             </Concept>
  286           </concepts>
  287           <distance>1</distance>
  288           <relation>
  289             <description/>
  290             <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  291           </relation>
  292         </ConceptRelatives>
  293         <ConceptRelatives>
  294           <concepts>
  295             <Concept>
  296               <definition/>
  297               <example/>
  298               <externalID/>
  299               <nonPreferredLabels>
  300                 <String>Malformations</String>
  301               </nonPreferredLabels>
  302               <preferredLabel>Abnormalities</preferredLabel>
  303               <scopeNote/>
  304               <uri>
  305                 <uri>http://thesaurus.nbii.gov/Concept/11</uri>
  306               </uri>
  307             </Concept>
  308             <Concept>
  309               <definition/>
  310               <example/>
  311               <externalID/>
  312               <nonPreferredLabels>
  313                 <String>Malformations</String>
  314               </nonPreferredLabels>
  315               <preferredLabel>Anomalies (defects)</preferredLabel>
  316               <scopeNote/>
  317               <uri>
  318                 <uri>http://thesaurus.nbii.gov/Concept/458</uri>
  319               </uri>
  320             </Concept>
  321             <Concept>
  322               <definition/>
  323               <example/>
  324               <externalID/>
  325               <nonPreferredLabels>
  326                 <String>Malformations</String>
  327               </nonPreferredLabels>
  328               <preferredLabel>Body deformations</preferredLabel>
  329               <scopeNote/>
  330               <uri>
  331                 <uri>http://thesaurus.nbii.gov/Concept/1087</uri>
  332               </uri>
  333             </Concept>
  334           </concepts>
  335           <distance>1</distance>
  336           <relation>
  337             <description/>
  338             <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  339           </relation>
  340         </ConceptRelatives>
  341       </conceptRelatives>
  342     </ConceptResult>
  343   </Array>

Great it's much more readable and the length is reduced to a third, and it can even ignore the empty elements:

    1 <Array>
    2   <ConceptResult>
    3     <concept>
    4       <nonPreferredLabels />
    5       <preferredLabel>Limb malformations</preferredLabel>
    6       <uri>
    7         <uri>http://thesaurus.nbii.gov/Concept/4896</uri>
    8       </uri>
    9     </concept>
   10     <conceptRelatives>
   11       <ConceptRelatives>
   12         <concepts>
   13           <Concept>
   14             <nonPreferredLabels />
   15             <preferredLabel>Malformations</preferredLabel>
   16             <scopeNote>Restricted to living organisms.</scopeNote>
   17             <uri>
   18               <uri>http://thesaurus.nbii.gov/Concept/5093</uri>
   19             </uri>
   20           </Concept>
   21         </concepts>
   22         <distance>1</distance>
   23         <relation>
   24           <label>http://www.w3.org/2004/02/skos/core#useFor</label>
   25         </relation>
   26       </ConceptRelatives>
   27       <ConceptRelatives>
   28         <concepts>
   29           <Concept>
   30             <nonPreferredLabels />
   31             <preferredLabel>Limb (animal)</preferredLabel>
   32             <uri>
   33               <uri>http://thesaurus.nbii.gov/Concept/4894</uri>
   34             </uri>
   35           </Concept>
   36         </concepts>
   37         <distance>1</distance>
   38         <relation>
   39           <label>http://www.w3.org/2004/02/skos/core#useFor</label>
   40         </relation>
   41       </ConceptRelatives>
   42       <ConceptRelatives>
   43         <concepts>
   44           <Concept>
   45             <nonPreferredLabels />
   46             <preferredLabel>LSC</preferredLabel>
   47             <uri>
   48               <uri>http://thesaurus.nbii.gov/Concept/9560</uri>
   49             </uri>
   50           </Concept>
   51         </concepts>
   52         <distance>1</distance>
   53         <relation>
   54           <label>http://www.w3.org/2004/02/skos/core#useFor</label>
   55         </relation>
   56       </ConceptRelatives>
   57     </conceptRelatives>
   58   </ConceptResult>
   59   <ConceptResult>
   60     <concept>
   61       <nonPreferredLabels />
   62       <preferredLabel>Malformations</preferredLabel>
   63       <scopeNote>Restricted to living organisms.</scopeNote>
   64       <uri>
   65         <uri>http://thesaurus.nbii.gov/Concept/5093</uri>
   66       </uri>
   67     </concept>
   68     <conceptRelatives>
   69       <ConceptRelatives>
   70         <concepts>
   71           <Concept>
   72             <nonPreferredLabels />
   73             <preferredLabel>Aneuploidy</preferredLabel>
   74             <uri>
   75               <uri>http://thesaurus.nbii.gov/Concept/409</uri>
   76             </uri>
   77           </Concept>
   78           <Concept>
   79             <nonPreferredLabels />
   80             <preferredLabel>Chromosome aberrations</preferredLabel>
   81             <uri>
   82               <uri>http://thesaurus.nbii.gov/Concept/1608</uri>
   83             </uri>
   84           </Concept>
   85           <Concept>
   86             <nonPreferredLabels />
   87             <preferredLabel>Aristapedia</preferredLabel>
   88             <uri>
   89               <uri>http://thesaurus.nbii.gov/Concept/611</uri>
   90             </uri>
   91           </Concept>
   92           <Concept>
   93             <nonPreferredLabels />
   94             <preferredLabel>Congenital defects</preferredLabel>
   95             <uri>
   96               <uri>http://thesaurus.nbii.gov/Concept/1860</uri>
   97             </uri>
   98           </Concept>
   99           <Concept>
  100             <nonPreferredLabels />
  101             <preferredLabel>Loss of heterozygosity</preferredLabel>
  102             <uri>
  103               <uri>http://thesaurus.nbii.gov/Concept/4991</uri>
  104             </uri>
  105           </Concept>
  106           <Concept>
  107             <nonPreferredLabels />
  108             <preferredLabel>Nondisjunction</preferredLabel>
  109             <uri>
  110               <uri>http://thesaurus.nbii.gov/Concept/5870</uri>
  111             </uri>
  112           </Concept>
  113           <Concept>
  114             <nonPreferredLabels />
  115             <preferredLabel>Ring chromosomes</preferredLabel>
  116             <uri>
  117               <uri>http://thesaurus.nbii.gov/Concept/7481</uri>
  118             </uri>
  119           </Concept>
  120           <Concept>
  121             <nonPreferredLabels />
  122             <preferredLabel>Translocation (genetics)</preferredLabel>
  123             <uri>
  124               <uri>http://thesaurus.nbii.gov/Concept/8906</uri>
  125             </uri>
  126           </Concept>
  127           <Concept>
  128             <nonPreferredLabels />
  129             <preferredLabel>Neural tube defects</preferredLabel>
  130             <uri>
  131               <uri>http://thesaurus.nbii.gov/Concept/5758</uri>
  132             </uri>
  133           </Concept>
  134           <Concept>
  135             <nonPreferredLabels />
  136             <preferredLabel>Genetic abnormalities</preferredLabel>
  137             <uri>
  138               <uri>http://thesaurus.nbii.gov/Concept/3611</uri>
  139             </uri>
  140           </Concept>
  141           <Concept>
  142             <nonPreferredLabels />
  143             <preferredLabel>Limb malformations</preferredLabel>
  144             <uri>
  145               <uri>http://thesaurus.nbii.gov/Concept/4896</uri>
  146             </uri>
  147           </Concept>
  148         </concepts>
  149         <distance>1</distance>
  150         <relation>
  151           <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  152         </relation>
  153       </ConceptRelatives>
  154       <ConceptRelatives>
  155         <concepts>
  156           <Concept>
  157             <nonPreferredLabels />
  158             <preferredLabel>Teratogenesis</preferredLabel>
  159             <uri>
  160               <uri>http://thesaurus.nbii.gov/Concept/8674</uri>
  161             </uri>
  162           </Concept>
  163           <Concept>
  164             <nonPreferredLabels />
  165             <preferredLabel>Teratology</preferredLabel>
  166             <scopeNote>Science treating malformations and monstrosities of plants and animals.</scopeNote>
  167             <uri>
  168               <uri>http://thesaurus.nbii.gov/Concept/8677</uri>
  169             </uri>
  170           </Concept>
  171           <Concept>
  172             <nonPreferredLabels />
  173             <preferredLabel>Teratogens</preferredLabel>
  174             <scopeNote>Agents that raise the incidence of congenital malformations</scopeNote>
  175             <uri>
  176               <uri>http://thesaurus.nbii.gov/Concept/8676</uri>
  177             </uri>
  178           </Concept>
  179         </concepts>
  180         <distance>1</distance>
  181         <relation>
  182           <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  183         </relation>
  184       </ConceptRelatives>
  185       <ConceptRelatives>
  186         <concepts>
  187           <Concept>
  188             <nonPreferredLabels />
  189             <preferredLabel>ASF</preferredLabel>
  190             <uri>
  191               <uri>http://thesaurus.nbii.gov/Concept/9558</uri>
  192             </uri>
  193           </Concept>
  194           <Concept>
  195             <nonPreferredLabels />
  196             <preferredLabel>LSC</preferredLabel>
  197             <uri>
  198               <uri>http://thesaurus.nbii.gov/Concept/9560</uri>
  199             </uri>
  200           </Concept>
  201         </concepts>
  202         <distance>1</distance>
  203         <relation>
  204           <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  205         </relation>
  206       </ConceptRelatives>
  207       <ConceptRelatives>
  208         <concepts>
  209           <Concept>
  210             <nonPreferredLabels>
  211               <String>Malformations</String>
  212             </nonPreferredLabels>
  213             <preferredLabel>Abnormalities</preferredLabel>
  214             <uri>
  215               <uri>http://thesaurus.nbii.gov/Concept/11</uri>
  216             </uri>
  217           </Concept>
  218           <Concept>
  219             <nonPreferredLabels>
  220               <String>Malformations</String>
  221             </nonPreferredLabels>
  222             <preferredLabel>Anomalies (defects)</preferredLabel>
  223             <uri>
  224               <uri>http://thesaurus.nbii.gov/Concept/458</uri>
  225             </uri>
  226           </Concept>
  227           <Concept>
  228             <nonPreferredLabels>
  229               <String>Malformations</String>
  230             </nonPreferredLabels>
  231             <preferredLabel>Body deformations</preferredLabel>
  232             <uri>
  233               <uri>http://thesaurus.nbii.gov/Concept/1087</uri>
  234             </uri>
  235           </Concept>
  236         </concepts>
  237         <distance>1</distance>
  238         <relation>
  239           <label>http://www.w3.org/2004/02/skos/core#useFor</label>
  240         </relation>
  241       </ConceptRelatives>
  242     </conceptRelatives>
  243   </ConceptResult>
  244 </Array>

Whereby the number of lines is reduced to a fourth of the original response, and all the extra nested uri's count for quite some.

Now I'm ready to have a further look at it and maybe work on my own small webapp to browse this Thesaurus.

0 comments :