| At line 0 added 90 lines. |
| + !! Brief Description |
| + The ''GetTaxa'' actor is a custom SEEK::Taxon actor will |
| + interact with the Taxonomic Object Service (TOS) via the |
| + API defined for the TOS ([See API Signatures | TOSAPISignatures]) for |
| + the retrival of name strings destined to be used to query |
| + DiGIR providers during the Ecological Niche Model workflow. |
| + An example question that this actor should be able to |
| + answer is: What are all names used for Mammal species |
| + concepts defined within ITIS, 2005? |
| + |
| + The returned name strings will include names from two |
| + different sources: |
| + |
| + * Those names associated with concepts that have been defined |
| + to have a synonymy relationship within the authority. |
| + * Those names that have been extracted from the Mammal |
| + Networked Information System ([MaNIS | http://manisnet.org]). |
| + |
| + During import of the names extracted from MaNIS, a simple |
| + N-Gram algorithm is used by the TOS to associate each name |
| + with the best concept within each authority known to the |
| + TOS. |
| + |
| + This actor will replace the workflow consisting of three |
| + ''WebService'' actors that was discussed during the |
| + Oct. 2005 All-Hands meeting in San Diego. |
| + |
| + !! Requirements |
| + * The TOS must be stable and publicly accessible |
| + * A user should be able to specify the authoritative list whose |
| + data they trust |
| + * A user should be able to limit the breadth of the results by |
| + selecting the root node within the authority's hierarchy |
| + * A user should be able to specify any level within the authority's |
| + hierarchy from which concepts will be extracted |
| + * A user should have the option of dealing with names that overlap |
| + (are associated with) multiple concepts in the result set |
| + * The actor should be able to distinguish overlaps in the result set |
| + |
| + !! Inputs |
| + * ''name'' |
| + ** Type: __string__ |
| + ** The scientific name used to determine the GUID of the concept |
| + acting as the root of the sub-tree of the hierarchy defined by |
| + the authority. |
| + ** Ex: "Mammalia" |
| + |
| + * ''auth'' |
| + ** Type: __string__ |
| + ** The authoritative list containing the hierarchy and synonymy |
| + information used to extract the names. |
| + ** Ex: "ITIS, 2005" |
| + |
| + * ''targetLevel (string)'' |
| + ** Type: __string__ |
| + ** The taxonomic rank of the concepts from which names should be |
| + extracted. |
| + ** Ex: "Species" |
| + |
| + * ''checkForOverlaps'' |
| + ** Type: __boolean__ |
| + ** True if the actor should check for overlaps in the names returned, |
| + false otherwise |
| + |
| + !! Output |
| + * A 2-dimensional array with the following properties: |
| + ** Each row is an association between a concept and a set of names |
| + ** Index 0 of each row is the GUID of the concept to which the names |
| + contained in the remaining elements is associated |
| + ** Ex: |
| + {{{[["urn:lsid:bioguid.org:concept:1", "Pan troglodytes", "chimpanzee"], |
| + ["urn:lsid:biobuid.org:concept:2", "Pan paniscus", "bonobo"]]}}} |
| + |
| + !! Basic Algorithm |
| + {{{ |
| + guids = TOS.getBestConcept(name, auth) |
| + if (guids.length > 1) then |
| + user interaction to pick best guid |
| + |
| + string[][] synNames = TOS.getSynsForAuthoritativeList(guid, auth, targetLevel) |
| + |
| + if (checkForOverlaps) then |
| + determine overlapsExist |
| + if (overlapsExist) then |
| + user interaction}}} |
| + |
| + !! Development Agenda |
| + * __Dec. 09 2005__: Stubbed prototype, no interaction with TOS |
| + * __Feb. 2006__: Stable implementation with no user interaction |
| + * __TBD__: Stable implementation with user interaction |