data2health / tool-registry

Application for discovery and sharing of software resources across a community
1 stars 1 forks source link

Make a list of tool types #1

Closed tschaffter closed 4 years ago

tschaffter commented 4 years ago

Make a list of the types of tools that the registry could support. Examples include Rython script, R script, Docker image, web service, API, etc.

Tasks

jaeddy commented 4 years ago

bio.tools has a fairly well defined schema* that includes a list of tool types.

Doesn't seem to be obviously connected to any sort of standards or ontologies (which could be OK), but probably a useful starting point:

*bonus points if you can figure out how to convert it to something other than "XSD" 🤕

<uiTip>Type of application software.  A tool may have more than one type.</uiTip>
<biotoolsUsage>Basic details</biotoolsUsage>
<enum>
    <enumItem>
        <term>Command-line tool</term>
        <uiTip>A tool with a text-based (command-line) interface.</uiTip>
    </enumItem>
    <enumItem>
        <term>Database portal</term>
        <uiTip>A Web application, suite or workbench providing a portal to a biological database.</uiTip>
    </enumItem>
    <enumItem>
        <term>Desktop application</term>
        <uiTip>A tool with a graphical user interface that runs on your desktop environment, e.g. on a PC or mobile device.</uiTip>
    </enumItem>
    <enumItem>
        <term>Library</term>
        <uiTip>A collection of components that are used to construct other tools.  bio.tools scope includes component libraries performing high-level bioinformatics functions but excludes lower-level programming libraries.</uiTip>
    </enumItem>
    <enumItem>
        <term>Ontology</term>
        <uiTip>A collection of information about concepts, including terms, synonyms, descriptions etc.</uiTip>
    </enumItem>
    <enumItem>
        <term>Plug-in</term>
        <uiTip>A software component encapsulating a set of related functions, which are not standalone but depend upon (and typically extend the function of) other software for its use, e.g. a JavaScript widget, plug-in, extension or add-on.</uiTip>
    </enumItem>
    <enumItem>
        <term>Script</term>
        <uiTip>A tool written for some run-time environment (e.g. other applications or an OS shell) that automates the execution of tasks. Often a small program written in a general-purpose languages (e.g. Perl, Python) or some domain-specific languages (e.g. sed).</uiTip>
    </enumItem>
    <enumItem>
        <term>SPARQL endpoint</term>
        <uiTip>A service that provides queries over an RDF knowledge base via the SPARQL query language and protocol, and returns results via HTTP.</uiTip>
    </enumItem>
    <enumItem>
        <term>Suite</term>
        <uiTip>A collection of tools which are bundled together into a convenient toolkit.  Such tools typically share related functionality, a common user interface and can exchange data conveniently.  This includes collections of stand-alone command-line tools, or Web applications within a common portal.</uiTip>
    </enumItem>
    <enumItem>
        <term>Web application</term>
        <uiTip>A tool with a graphical user interface that runs in your Web browser.</uiTip>
    </enumItem>
    <enumItem>
        <term>Web API</term>
        <uiTip>An application programming interface (API) consisting of endpoints to a request-response message system accessible via HTTP.  Includes everything from simple data-access URLs to RESTful APIs.</uiTip>
    </enumItem>
    <enumItem>
        <term>Web service</term>
        <uiTip>An API described in a machine readable form (typically WSDL) providing programmatic access via SOAP over HTTP.</uiTip>
    </enumItem>
    <enumItem>
        <term>Workbench</term>
        <uiTip>An application or suite with a graphical user interface, providing an integrated environment for data analysis which includes or may be extended with any number of functions or tools.  Includes workflow systems, platforms, frameworks etc.</uiTip>
    </enumItem>
    <enumItem>
        <term>Workflow</term>
        <uiTip>A set of tools which have been composed together into a pipeline of some sort.  Such tools are (typically) standalone, but are composed for convenience, for instance for batch execution via some workflow engine or script.</uiTip>
    </enumItem>
</enum>
tschaffter commented 4 years ago
tschaffter commented 4 years ago

The Software Ontology (SWO) also includes types useful to characterize tools.

Information content entity

Operation

Special cases are: a) An operation that consumes no input (has no input arguments). Such an operation is either a constant function, or an operation depending only on the underlying state. b) An operation that may modify the underlying state but has no output. c) The singular-case operation with no input or output, that still may modify the underlying state.

Annotations of interest (most of them having sub-annotations):

These entities are capture here: https://docs.google.com/document/d/1mt69WTSPWKVNkvZz__YMCCfB6awNozr6u7pmIz6Z7mI/edit#bookmark=id.dl3bwxdq8bg2

tschaffter commented 4 years ago

@jaeddy I think that bio-tools/biotoolsSchema is a practical and modern/up-to-date starting point. biotoolsSchema does include references to ontologies, one of them being the EDAM ontology.

I'll try to put in a spreadsheet relevant content from https://github.com/bio-tools/biotoolsSchema/blob/master/stable/biotools.xsd.

tschaffter commented 4 years ago

The next step is to study carefully the schemas defined by bio.tools (#8 ).