# Module Documentation: eml-software | Back to EML Contents

### The eml-software module - Software specific information

The eml-software module contains general information that describes software resources. This module is intended to fully document software that is needed in order to view a resource (such as a dataset) or to process a dataset. The software module is also imported into the eml-methods module in order to document what software was used to process or perform quality control procedures on a dataset.

The eml-software module, like other modules, may be "referenced" via the <references> tag. This allows a software resource to be described once, and then used as a reference in other locations within the EML document via its ID.

## Module details

Recommended Usage: | All datasets where software was used in the analysis or creation of the dataset.
Stand-alone: | yes
Imports: | eml-documentation, eml-resource, eml-access, eml-project, eml-physical
Imported By: |
View an image of the schema: | eml-software image

## Element Definitions:
#### software | This element has no default value.
Content of this field: | Description of this field:
Type: SoftwareType
| The software element contains general information about a software resource that is being documented. This field is intended to give information for software tools that are needed to interpret a dataset, software that was written to process a resource, or software as a resource in itself. It is based on eml-resource and Open Software Description (OSD) a W3C submission. There can be multiple implementations within a software package because a physical software package can run on multiple hardware and/or operating systems. See implementation element documentation for a more thorough explanation.
#### implementation | This element has no default value.
Content of this field: | Description of this field:
Elements: | Use: | How many:
A sequence of (
distribution | required | unbounded
size | optional |
language | optional | unbounded
operatingSystem | optional | unbounded
machineProcessor | optional | unbounded
virtualMachine | optional |
diskUsage | optional |
runtimeMemoryUsage | optional |
programmingLanguage | optional | unbounded
checksum | optional |
dependency | optional | unbounded
)
| Implementation describes the hardware, operating system resources a package runs on. Note, a package can have multiple implementations. So for example, a package may be written in java and the package may run on numerous hardware and/or operating systems like Pentium/Linux, Pentium/NT and so on. Hardware and Software descriptions that have different requirements can be placed here. Example(s): Please see the examples for each sub-element of the implementation type.
#### distribution | This element has no default value.
Content of this field: | Description of this field:
Type: phys:PhysicalDistributionType
| This field provides information on how the resource is distributed online and offline. Connections to online systems can be described as URLs and as a list of relevant connection parameters.
#### size | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The physical size of an implementation on disk. Example(s): 100 Megabytes
#### language | This element has no default value.
Content of this field: | Description of this field:
Elements: | Use: | How many:
A sequence of (
LanguageValue | required |
LanguageCodeStandard | optional |
)
| The International Language of the software implementation.
#### LanguageValue | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The actual value for the language or a code for the language. Example(s): english eng
#### LanguageCodeStandard | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The International Language Code being used in the field languageValue. See http://www.loc.gov/standards/iso639-2/ Example(s): ISO639-2
#### operatingSystem | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The operating system(s) an implementation runs on. Example(s): Linux Windows 95 Windows NT4 Windows XP Sun Solaris 2.8 Mac OS X
#### machineProcessor | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The Machine Processor required for executing the implementation. Example(s): Pentium II Intel 486 SUN Sparc Motorola
#### virtualMachine | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The virtual machine that the implementation requires. Example(s): Java Virtual Machine 1.2
#### diskUsage | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The minimum amount of Disk Space required to install this implementation. Example(s): 220 Megabytes 15 MB 100 kB
#### runtimeMemoryUsage | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The minimum amount of memory required to run an implementation. Example(s): 32 Megabytes 128 MB
#### programmingLanguage | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The computer programming language the software package was programmed in. Example(s): C++ Java C C# Perl Cobol Fortran Lisp Visual Basic VBA Bourne Shell Script
#### checksum | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| The generated checksum value of a software package that is a self-contained module. Example(s): $sum software.jar 27021 22660
#### licenseURL | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| URL where the license can be found
#### license | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| Text of the license
#### version | This element has no default value.
Content of this field: | Description of this field:
Type: res:NonEmptyStringType
| String value corresponding to the major, minor, custom, and build version.
#### project | This element has no default value.
Content of this field: | Description of this field:
Type: proj:ResearchProjectType
| This field is a description of the project with which this software product is related. Please see the eml-project module for more information.
#### dependency | This element has no default value.
Content of this field: | Description of this field:
Elements: | Use: | How many:
A sequence of (
action | required |
software | required |
)
| The dependency element is recursive. It is a sub-element of the software Element but it also has as a sub-element its parent element Software Package. Dependency has been made optional because to make it mandatory does not allow the recursion to end. Dependency has also been made a sub-element of implementation because there can be both implementation and package level dependencies within a package.
#### action | This element has no default value.
Content of this field: | Description of this field:
Type: Action
| This element and its enumerations of assert and install can be used as commands by a software application to carry out these actions on software package dependencies. This is a change from how we have used all previous elements within eml. Up until now all other elements have been simply metadata designed to describe data, literature citations, etc... with the Action element we can use this module as a command to carry out the action.
## Attribute Definitions:
#### id
Type: res:IDType Use: optional
#### system
Type: res:SystemType Use: optional
#### scope
Type: res:ScopeType Use: optional Default value: document
## Complex Type Definitions:
#### SoftwareType |
Content of this field: | Description of this field:
Elements: | Use: | How many:
A choice of (
A sequence of (
res:ResourceGroup |  |
implementation | required | unbounded
dependency | optional | unbounded
A choice of (
licenseURL | required |
OR
license | required |
)
version | required |
project | optional |
)
OR
res:ReferencesGroup |  |
)
Attributes: | Use: | Default Value:
id | optional
system | optional
scope | optional | document
## Simple Type Definitions:
### #### Action
Derived from: xs:string (by xs:restriction) Allowed values: install assert | This element and its enumerations of assert and install can be used as commands by a software application to carry out these actions on software package dependencies. This is a change from how we have used all previous elements within eml. Up until now all other elements have been simply metadata designed to describe data, literature citations, etc... with the Action element we can use this module as a command to carry out the action.
## Group Definitions:

Web Contact: jones@nceas.ucsb.edu