Detailed Definition

This section details what SEIS-PROV is, what records are part of it, and how these records are defined.

What PROV Records are Considered Part of SEIS-PROV?

SEIS-PROV is a domain-specific extension of W3C PROV and thus all the capabilities of W3C PROV can be used. Furthermore a SEIS-PROV document must also be a valid W3C PROV document.

It can be understood as an additional set of constraints on top of W3C PROV. These constraints are currently enforced per record and there are four possibilities for a record to be considered part of SEIS-PROV:

  1. An agent with a prov:type equal to prov:SoftwareAgent and an id under the SEIS-PROV namespace.
  2. An agent with a prov:type equal to prov:Person and an id under the SEIS-PROV namespace.
  3. An entity with a prov:type and id under the SEIS-PROV namespace.
  4. An activity with a prov:type and id under the SEIS-PROV namespace.

All other records must just be valid according to the W3C PROV specification. It is forbidden to use an identifier under the SEIS-PROV namespace for any other record.

As soon as a record is considered part of SEIS-PROV it must fulfill the additional constraints detailed in the following.

SEIS-PROV IDs

All prov:id‘s living in the SEIS-PROV namespace must follow a certain pattern - they have to validate against this regular expression:

^sp\d{3,5}_[a-z]{2}_[a-z0-9]{7,12}$

Examples are:

  • sp001_wf_f84fb9a
  • sp027_bs_ea78b46

An id thus consists of three parts delimited by underscores with the goal of attaining a fairly short but still slightly descriptive identifier:

  1. A 3 to 5 digit zero padded number prefixed with sp. This is intended to further illustrate the sequence of processing steps and events. 001 for example is the first step in a processing chain, whereas 017 is the seventeenth step. This is not enforced anywhere but nice to have so users are encouraged to adopt this. In case there is no inherent order to things, feel free to use 000. The sp prefix is needed to provide a valid qualified name attribute according the XML specification and stands for SEIS-PROV.
  2. A two letter code depending on the type of entity or activity. This is enforced and part of the SEIS-PROV definition. Please see the definition of each node for the corresponding two letter code.
  3. A 7 to 12 letter lowercase alphanumeric hash to ensure uniqueness of ids.

Agents

One is free to use any agent as long as they are valid according to the W3C PROV specification. If an agent is under the SEIS-PROV namespace, a couple of additional constraints apply. These are intended to enforce a certain minimum amount of information.


Software Agent

This agent describes the software used for a particular task. It requires some attributes to be able to uniquely determine the used software including the version. If you use the development version of a particular software you should reflect that in the version number.

Properties
Name Value
prov:id software_agent
prov:label *
Two letter ID code: sa
Required Attributes
Name Type Description
software_name xsd:string The name of the software.
software_version xsd:string The version number of the used software.
website xsd:anyURI The website where one can find further information.
Optional Attributes
Name Type Description
doi xsd:string The digital object identifier for the software.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "agent",
    "name": "software_agent",
    "two_letter_code": "sa",
    "label": "*",
    "description": "This agent describes the software used for a particular task. It requires some attributes to be able to uniquely determine the used software including the version. If you use the development version of a particular software you should reflect that in the version number.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "software_name",
            "types": ["xsd:string"],
            "description": "The name of the software.",
            "required": true,
            "example_value": "ObsPy"
        },
        {
            "name": "software_version",
            "types": ["xsd:string"],
            "description": "The version number of the used software.",
            "required": true,
            "example_value": "0.10.2"
        },
        {
            "name": "website",
            "types": ["xsd:anyURI"],
            "description": "The website where one can find further information.",
            "required": true,
            "example_value": "http://obspy.org"
        },
        {
            "name": "doi",
            "types": ["xsd:string"],
            "pattern": "(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\"#? ])\\S)+)",
            "description": "The digital object identifier for the software.",
            "required": false,
            "example_value": "10.5281/zenodo.17641"
        }
    ]
}

Minimal Example

A concrete software_agent node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid software_agent node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,276,174"];
	n1 [label=<ObsPy<br /><font color="#333333" point-size="10">seis_prov:sp001_sa_3880d70</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_sa_3880d70", fillcolor="#FED37F", shape=house, style=filled, pos="138,141", width="3.8333", height="0.90278"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">ObsPy</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left" href="http://www.w3.org/ns/prov#SoftwareAgent">prov:SoftwareAgent</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#software_name">seis_prov:software_name</TD>
        <TD align="left">ObsPy</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#software_version">seis_prov:software_version</TD>
        <TD align="left">0.10.2</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#website">seis_prov:website</TD>
        <TD align="left" href="http://obspy.org">http://obspy.org</TD>
    </TR>
    </TABLE>>, shape=note, color=gray, fontcolor=black, fontsize=10, pos="138,36", width="3.3889", height="0.98611"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="138,71.548 138,85.708 138,101.71 138,114.78"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.agent("seis_prov:sp001_sa_3880d70", other_attributes=((
    ("prov:label", "ObsPy"),
    ("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "SoftwareAgent")),
    ("seis_prov:software_name", "ObsPy"),
    ("seis_prov:software_version", "0.10.2"),
    ("seis_prov:website", prov.model.Literal(
        'http://obspy.org',
        prov.constants.XSD_ANYURI))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:softwareAgent prov:id="seis_prov:sp001_sa_3880d70">
    <prov:label>ObsPy</prov:label>
    <seis_prov:software_name>ObsPy</seis_prov:software_name>
    <seis_prov:software_version>0.10.2</seis_prov:software_version>
    <seis_prov:website xsi:type="xsd:anyURI">http://obspy.org</seis_prov:website>
  </prov:softwareAgent>
</prov:document>

In the PROV-JSON serialization.

{
    "agent": {
        "seis_prov:sp001_sa_3880d70": {
            "prov:label": "ObsPy",
            "prov:type": {
                "$": "prov:SoftwareAgent",
                "type": "prov:QUALIFIED_NAME"
            },
            "seis_prov:software_name": "ObsPy",
            "seis_prov:software_version": "0.10.2",
            "seis_prov:website": {
                "$": "http://obspy.org",
                "type": "xsd:anyURI"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  agent(seis_prov:sp001_sa_3880d70, [seis_prov:website="http://obspy.org" %% xsd:anyURI, prov:type='prov:SoftwareAgent', prov:label="ObsPy", seis_prov:software_version="0.10.2", seis_prov:software_name="ObsPy"])
endDocument

Full Example

A concrete software_agent node example is illustrated here as a graph, in code, and in various representations. This is a full software_agent node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,270,186"];
	n1 [label=<ObsPy<br /><font color="#333333" point-size="10">seis_prov:sp001_sa_63fd9d1</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_sa_63fd9d1", fillcolor="#FED37F", shape=house, style=filled, pos="135,153", width="3.75", height="0.90278"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">ObsPy</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left" href="http://www.w3.org/ns/prov#SoftwareAgent">prov:SoftwareAgent</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#doi">seis_prov:doi</TD>
        <TD align="left">10.5281/zenodo.17641</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#software_name">seis_prov:software_name</TD>
        <TD align="left">ObsPy</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#software_version">seis_prov:software_version</TD>
        <TD align="left">0.10.2</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#website">seis_prov:website</TD>
        <TD align="left" href="http://obspy.org">http://obspy.org</TD>
    </TR>
    </TABLE>>, shape=note, color=gray, fontcolor=black, fontsize=10, pos="135,42", width="3.6389", height="1.1528"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="135,83.648 135,98.043 135,113.77 135,126.6"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.agent("seis_prov:sp001_sa_63fd9d1", other_attributes=((
    ("prov:label", "ObsPy"),
    ("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "SoftwareAgent")),
    ("seis_prov:software_name", "ObsPy"),
    ("seis_prov:software_version", "0.10.2"),
    ("seis_prov:website", prov.model.Literal(
        'http://obspy.org',
        prov.constants.XSD_ANYURI)),
    ("seis_prov:doi", "10.5281/zenodo.17641")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:softwareAgent prov:id="seis_prov:sp001_sa_63fd9d1">
    <prov:label>ObsPy</prov:label>
    <seis_prov:doi>10.5281/zenodo.17641</seis_prov:doi>
    <seis_prov:software_name>ObsPy</seis_prov:software_name>
    <seis_prov:software_version>0.10.2</seis_prov:software_version>
    <seis_prov:website xsi:type="xsd:anyURI">http://obspy.org</seis_prov:website>
  </prov:softwareAgent>
</prov:document>

In the PROV-JSON serialization.

{
    "agent": {
        "seis_prov:sp001_sa_63fd9d1": {
            "prov:label": "ObsPy",
            "prov:type": {
                "$": "prov:SoftwareAgent",
                "type": "prov:QUALIFIED_NAME"
            },
            "seis_prov:doi": "10.5281/zenodo.17641",
            "seis_prov:software_name": "ObsPy",
            "seis_prov:software_version": "0.10.2",
            "seis_prov:website": {
                "$": "http://obspy.org",
                "type": "xsd:anyURI"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  agent(seis_prov:sp001_sa_3880d70, [seis_prov:website="http://obspy.org" %% xsd:anyURI, prov:type='prov:SoftwareAgent', prov:label="ObsPy", seis_prov:software_version="0.10.2", seis_prov:software_name="ObsPy"])
endDocument

Person

A person is an agent either denoting who is responsible for a certain activity (wasAssociatedWith) or who is responsible for the actions of another agent (actedOnBehalfOf). This is useful to state who performed a particular task. A person in the SEIS-PROV namespace must have a name and can have an email address. A person can also have any number of additional attributes in the SEIS-PROV namespace to describe it in more detail.

Properties
Name Value
prov:id person
prov:label *
Two letter ID code: pp
Required Attributes
Name Type Description
name xsd:string The name of the person.
Optional Attributes
Name Type Description
email xsd:string The email address of the person.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "agent",
    "name": "person",
    "two_letter_code": "pp",
    "label": "*",
    "description": "A person is an agent either denoting who is responsible for a certain activity (``wasAssociatedWith``) or who is responsible for the actions of another agent (``actedOnBehalfOf``). This is useful to state who performed a particular task. A person in the ``SEIS-PROV`` namespace must have a name and can have an email address. A person can also have any number of additional attributes in the ``SEIS-PROV`` namespace to describe it in more detail.",
    "other_seis_prov_attributes_allowed": true,
    "attributes": [
        {
            "name": "name",
            "types": ["xsd:string"],
            "description": "The name of the person.",
            "required": true,
            "example_value": "Susanna Musterfrau"
        },
        {
            "name": "email",
            "types": ["xsd:string"],
            "description": "The email address of the person.",
            "pattern": "[^@]+@[^@]+\\.[^@]+",
            "required": false,
            "example_value": "susanna.musterfrau@email.com"
        }
    ]
}

Minimal Example

A concrete person node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid person node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,274,150"];
	n1 [label=<Susanna Musterfrau<br /><font color="#333333" point-size="10">seis_prov:sp001_pp_2458e1f</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_pp_2458e1f", fillcolor="#FED37F", shape=house, style=filled, pos="137,117", width="3.8056", height="0.90278"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Susanna Musterfrau</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left" href="http://www.w3.org/ns/prov#Person">prov:Person</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#name">seis_prov:name</TD>
        <TD align="left">Susanna Musterfrau</TD>
    </TR>
    </TABLE>>, shape=note, color=gray, fontcolor=black, fontsize=10, pos="137,24", width="2.7222", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="137,47.95 137,60.974 137,77.112 137,90.511"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.agent("seis_prov:sp001_pp_2458e1f", other_attributes=((
    ("prov:label", "Susanna Musterfrau"),
    ("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Person")),
    ("seis_prov:name", "Susanna Musterfrau")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:person prov:id="seis_prov:sp001_pp_2458e1f">
    <prov:label>Susanna Musterfrau</prov:label>
    <seis_prov:name>Susanna Musterfrau</seis_prov:name>
  </prov:person>
</prov:document>

In the PROV-JSON serialization.

{
    "agent": {
        "seis_prov:sp001_pp_2458e1f": {
            "prov:label": "Susanna Musterfrau",
            "prov:type": {
                "$": "prov:Person",
                "type": "prov:QUALIFIED_NAME"
            },
            "seis_prov:name": "Susanna Musterfrau"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  agent(seis_prov:sp001_pp_2458e1f, [seis_prov:name="Susanna Musterfrau", prov:type='prov:Person', prov:label="Susanna Musterfrau"])
endDocument

Full Example

A concrete person node example is illustrated here as a graph, in code, and in various representations. This is a full person node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,274,162"];
	n1 [label=<Susanna Musterfrau<br /><font color="#333333" point-size="10">seis_prov:sp001_pp_18a80fa</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_pp_18a80fa", fillcolor="#FED37F", shape=house, style=filled, pos="137,129", width="3.8056", height="0.90278"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Susanna Musterfrau</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left" href="http://www.w3.org/ns/prov#Person">prov:Person</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#email">seis_prov:email</TD>
        <TD align="left">susanna.musterfrau@email.com</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#name">seis_prov:name</TD>
        <TD align="left">Susanna Musterfrau</TD>
    </TR>
    </TABLE>>, shape=note, color=gray, fontcolor=black, fontsize=10, pos="137,30", width="3.5556", height="0.81944"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="137,59.703 137,73.373 137,89.453 137,102.68"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.agent("seis_prov:sp001_pp_18a80fa", other_attributes=((
    ("prov:label", "Susanna Musterfrau"),
    ("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Person")),
    ("seis_prov:name", "Susanna Musterfrau"),
    ("seis_prov:email", "susanna.musterfrau@email.com")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:person prov:id="seis_prov:sp001_pp_18a80fa">
    <prov:label>Susanna Musterfrau</prov:label>
    <seis_prov:email>susanna.musterfrau@email.com</seis_prov:email>
    <seis_prov:name>Susanna Musterfrau</seis_prov:name>
  </prov:person>
</prov:document>

In the PROV-JSON serialization.

{
    "agent": {
        "seis_prov:sp001_pp_18a80fa": {
            "prov:label": "Susanna Musterfrau",
            "prov:type": {
                "$": "prov:Person",
                "type": "prov:QUALIFIED_NAME"
            },
            "seis_prov:email": "susanna.musterfrau@email.com",
            "seis_prov:name": "Susanna Musterfrau"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  agent(seis_prov:sp001_pp_2458e1f, [seis_prov:name="Susanna Musterfrau", prov:type='prov:Person', prov:label="Susanna Musterfrau"])
endDocument

Organization

An agent denoting an organization. This is useful to describe who is associated with what organization (wasAssociatedWith). An organization can also have any number of additional attributes in the SEIS-PROV namespace to describe it in more detail.

Properties
Name Value
prov:id organization
prov:label *
Two letter ID code: og
Required Attributes
Name Type Description
name xsd:string The name of the organization.
Optional Attributes
Name Type Description
website xsd:anyURI The website of the organization.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "agent",
    "name": "organization",
    "two_letter_code": "og",
    "label": "*",
    "description": "An agent denoting an organization. This is useful to describe who is associated with what organization (``wasAssociatedWith``). An organization can also have any number of additional attributes in the ``SEIS-PROV`` namespace to describe it in more detail.",
    "other_seis_prov_attributes_allowed": true,
    "attributes": [
        {
            "name": "name",
            "types": ["xsd:string"],
            "description": "The name of the organization.",
            "required": true,
            "example_value": "Example Organization"
        },
        {
            "name": "website",
            "types": ["xsd:anyURI"],
            "description": "The website of the organization.",
            "required": false,
            "example_value": "http://example.com"
        }
    ]
}

Minimal Example

A concrete organization node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid organization node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,298,150"];
	n1 [label=<Example Organization<br /><font color="#333333" point-size="10">seis_prov:sp001_og_f06b02d</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_og_f06b02d", fillcolor="#FED37F", shape=house, style=filled, pos="149,117", width="4.1389", height="0.90278"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Example Organization</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left" href="http://www.w3.org/ns/prov#Organization">prov:Organization</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#name">seis_prov:name</TD>
        <TD align="left">Example Organization</TD>
    </TR>
    </TABLE>>, shape=note, color=gray, fontcolor=black, fontsize=10, pos="149,24", width="2.8333", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="149,47.95 149,60.974 149,77.112 149,90.511"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.agent("seis_prov:sp001_og_f06b02d", other_attributes=((
    ("prov:label", "Example Organization"),
    ("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Organization")),
    ("seis_prov:name", "Example Organization")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:organization prov:id="seis_prov:sp001_og_f06b02d">
    <prov:label>Example Organization</prov:label>
    <seis_prov:name>Example Organization</seis_prov:name>
  </prov:organization>
</prov:document>

In the PROV-JSON serialization.

{
    "agent": {
        "seis_prov:sp001_og_f06b02d": {
            "prov:label": "Example Organization",
            "prov:type": {
                "$": "prov:Organization",
                "type": "prov:QUALIFIED_NAME"
            },
            "seis_prov:name": "Example Organization"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  agent(seis_prov:sp001_og_f06b02d, [seis_prov:name="Example Organization", prov:type='prov:Organization', prov:label="Example Organization"])
endDocument

Full Example

A concrete organization node example is illustrated here as a graph, in code, and in various representations. This is a full organization node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,298,162"];
	n1 [label=<Example Organization<br /><font color="#333333" point-size="10">seis_prov:sp001_og_0773673</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_og_0773673", fillcolor="#FED37F", shape=house, style=filled, pos="149,129", width="4.1389", height="0.90278"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Example Organization</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left" href="http://www.w3.org/ns/prov#Organization">prov:Organization</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#name">seis_prov:name</TD>
        <TD align="left">Example Organization</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#website">seis_prov:website</TD>
        <TD align="left" href="http://example.com">http://example.com</TD>
    </TR>
    </TABLE>>, shape=note, color=gray, fontcolor=black, fontsize=10, pos="149,30", width="2.9444", height="0.81944"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="149,59.703 149,73.373 149,89.453 149,102.68"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.agent("seis_prov:sp001_og_0773673", other_attributes=((
    ("prov:label", "Example Organization"),
    ("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Organization")),
    ("seis_prov:name", "Example Organization"),
    ("seis_prov:website", prov.model.Literal(
        'http://example.com',
        prov.constants.XSD_ANYURI))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:organization prov:id="seis_prov:sp001_og_0773673">
    <prov:label>Example Organization</prov:label>
    <seis_prov:name>Example Organization</seis_prov:name>
    <seis_prov:website xsi:type="xsd:anyURI">http://example.com</seis_prov:website>
  </prov:organization>
</prov:document>

In the PROV-JSON serialization.

{
    "agent": {
        "seis_prov:sp001_og_0773673": {
            "prov:label": "Example Organization",
            "prov:type": {
                "$": "prov:Organization",
                "type": "prov:QUALIFIED_NAME"
            },
            "seis_prov:name": "Example Organization",
            "seis_prov:website": {
                "$": "http://example.com",
                "type": "xsd:anyURI"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  agent(seis_prov:sp001_og_f06b02d, [seis_prov:name="Example Organization", prov:type='prov:Organization', prov:label="Example Organization"])
endDocument

Entities

SEIS-PROV determines the type of an entity via the prov:type attribute. The following entities are currently available. Further types will be added as requested by the community.


Waveform Trace

Represents a continuous, equally sampled observed or synthetic waveform trace. Most attributes are optional and can be used to describe either very detailed or fairly general provenance information.

Properties
Name Value
prov:id waveform_trace
prov:label Waveform Trace
Two letter ID code: wf
Required Attributes
None
Optional Attributes
Name Type Description
seed_id xsd:string The SEED id of the recording station.
description xsd:string An optional description of the waveform trace. This has no technical meaning but serves to make the provenance documents easier to understand.
component xsd:string The component of the recording. Many algorithms require a specific component and this attribute enables the description of these algorithms without using a specific SEED id.
start_time xsd:dateTime The time of the first sample in UTC.
number_of_samples xsd:positiveInteger The number of samples in the waveform trace.
sampling_rate xsd:double The sampling rate of the data.
units xsd:string Units of the waveform data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
azimuth xsd:double Azimuth of the component in degrees from north, clockwise, same definition as in StationXML.
dip xsd:double Dip of the component in degrees, down from horizontal, same definition as in StationXML.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "entity",
    "name": "waveform_trace",
    "two_letter_code": "wf",
    "label": "Waveform Trace",
    "description": "Represents a continuous, equally sampled observed or synthetic waveform trace. Most attributes are optional and can be used to describe either very detailed or fairly general provenance information.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "seed_id",
            "types": ["xsd:string"],
            "pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
            "description": "The SEED id of the recording station.",
            "required": false,
            "example_value": "BW.FURT..EHZ"
        },
        {
            "name": "description",
            "types": ["xsd:string"],
            "description": "An optional description of the waveform trace. This has no technical meaning but serves to make the provenance documents easier to understand.",
            "required": false,
            "example_value": "Synthetic Data"
        },
        {
            "name": "component",
            "types": ["xsd:string"],
            "pattern": "Z|N|E|R|T",
            "description": "The component of the recording. Many algorithms require a specific component and this attribute enables the description of these algorithms without using a specific SEED id.",
            "required": false,
            "example_value": "Z"
        },
        {
            "name": "start_time",
            "types": ["xsd:dateTime"],
            "description": "The time of the first sample in UTC.",
            "required": false,
            "example_value": "2012-04-23T18:25:43.511Z"
        },
        {
            "name": "number_of_samples",
            "types": ["xsd:positiveInteger"],
            "description": "The number of samples in the waveform trace.",
            "required": false,
            "example_value": 10000
        },
        {
            "name": "sampling_rate",
            "types": ["xsd:double"],
            "description": "The sampling rate of the data.",
            "required": false,
            "example_value": 20.0
        },
        {
            "name": "units",
            "types": ["xsd:string"],
            "description": "Units of the waveform data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m/s"
        },
        {
          "name": "azimuth",
          "types": ["xsd:double"],
          "description": "Azimuth of the component in degrees from north, clockwise, same definition as in StationXML.",
          "required": false,
          "example_value": 90.0
        },
        {
          "name": "dip",
          "types": ["xsd:double"],
          "description": "Dip of the component in degrees, down from horizontal, same definition as in StationXML.",
          "required": false,
          "example_value": 0.0
        }
    ]
}

Minimal Example

A concrete waveform_trace node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid waveform_trace node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,216,124"];
	n1 [label=<Waveform Trace<br /><font color="#333333" point-size="10">seis_prov:sp001_wf_c17dd1f</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_wf_c17dd1f", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="108,98", width=3, height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Waveform Trace</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:waveform_trace</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="108,18", width="2.6667", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="108,36.153 108,46.664 108,60.078 108,71.725"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_wf_c17dd1f", other_attributes=((
    ("prov:label", "Waveform Trace"),
    ("prov:type", "seis_prov:waveform_trace"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_wf_c17dd1f">
    <prov:label>Waveform Trace</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:waveform_trace</prov:type>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_wf_c17dd1f": {
            "prov:label": "Waveform Trace",
            "prov:type": "seis_prov:waveform_trace"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_wf_c17dd1f, [prov:type="seis_prov:waveform_trace", prov:label="Waveform Trace"])
endDocument

Full Example

A concrete waveform_trace node example is illustrated here as a graph, in code, and in various representations. This is a full waveform_trace node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,346,232"];
	n1 [label=<Waveform Trace<br /><font color="#333333" point-size="10">seis_prov:sp001_wf_8afb672</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_wf_8afb672", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="173,206", width=3, height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Waveform Trace</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:waveform_trace</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#azimuth">seis_prov:azimuth</TD>
        <TD align="left">90.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#component">seis_prov:component</TD>
        <TD align="left">Z</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#description">seis_prov:description</TD>
        <TD align="left">Synthetic Data</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#dip">seis_prov:dip</TD>
        <TD align="left">0.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#number_of_samples">seis_prov:number_of_samples</TD>
        <TD align="left">"10000" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#sampling_rate">seis_prov:sampling_rate</TD>
        <TD align="left">20.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#seed_id">seis_prov:seed_id</TD>
        <TD align="left">BW.FURT..EHZ</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#start_time">seis_prov:start_time</TD>
        <TD align="left">2012-04-23T18:25:43.511000+00:00</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#units">seis_prov:units</TD>
        <TD align="left">m/s</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="173,72", width="4.8056", height="1.9861"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="173,143.71 173,156.65 173,169.36 173,179.89"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_wf_8afb672", other_attributes=((
    ("prov:label", "Waveform Trace"),
    ("prov:type", "seis_prov:waveform_trace"),
    ("seis_prov:seed_id", "BW.FURT..EHZ"),
    ("seis_prov:description", "Synthetic Data"),
    ("seis_prov:component", "Z"),
    ("seis_prov:start_time", prov.model.Literal(
        '2012-04-23T18:25:43.511Z',
        prov.constants.XSD_DATETIME)),
    ("seis_prov:number_of_samples", prov.model.Literal(
        10000,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:sampling_rate", prov.model.Literal(
        20.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:units", "m/s"),
    ("seis_prov:azimuth", prov.model.Literal(
        90.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:dip", prov.model.Literal(
        0.0,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_wf_8afb672">
    <prov:label>Waveform Trace</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:waveform_trace</prov:type>
    <seis_prov:azimuth xsi:type="xsd:double">90.0</seis_prov:azimuth>
    <seis_prov:component>Z</seis_prov:component>
    <seis_prov:description>Synthetic Data</seis_prov:description>
    <seis_prov:dip xsi:type="xsd:double">0.0</seis_prov:dip>
    <seis_prov:number_of_samples xsi:type="xsd:positiveInteger">10000</seis_prov:number_of_samples>
    <seis_prov:sampling_rate xsi:type="xsd:double">20.0</seis_prov:sampling_rate>
    <seis_prov:seed_id>BW.FURT..EHZ</seis_prov:seed_id>
    <seis_prov:start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:start_time>
    <seis_prov:units>m/s</seis_prov:units>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_wf_8afb672": {
            "prov:label": "Waveform Trace",
            "prov:type": "seis_prov:waveform_trace",
            "seis_prov:azimuth": {
                "$": 90.0,
                "type": "xsd:double"
            },
            "seis_prov:component": "Z",
            "seis_prov:description": "Synthetic Data",
            "seis_prov:dip": {
                "$": 0.0,
                "type": "xsd:double"
            },
            "seis_prov:number_of_samples": {
                "$": "10000",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:sampling_rate": {
                "$": 20.0,
                "type": "xsd:double"
            },
            "seis_prov:seed_id": "BW.FURT..EHZ",
            "seis_prov:start_time": {
                "$": "2012-04-23T18:25:43.511000+00:00",
                "type": "xsd:dateTime"
            },
            "seis_prov:units": "m/s"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_wf_c17dd1f, [prov:type="seis_prov:waveform_trace", prov:label="Waveform Trace"])
endDocument

Input Parameters

The input parameters for a program like a waveform solvers as a list of key, value pairs. Each key can live in the SEIS-PROV namespace.

Properties
Name Value
prov:id input_parameters
prov:label Input Parameters
Two letter ID code: in
Required Attributes
None
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "entity",
    "name": "input_parameters",
    "two_letter_code": "in",
    "label": "Input Parameters",
    "description": "The input parameters for a program like a waveform solvers as a list of key, value pairs. Each key can live in the ``SEIS-PROV`` namespace.",
    "other_seis_prov_attributes_allowed": true,
    "attributes": [
    ]
}

Example

A concrete input_parameters node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,218,124"];
	n1 [label=<Input Parameters<br /><font color="#333333" point-size="10">seis_prov:sp001_in_a49316d</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_in_a49316d", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="109,98", width="3.0278", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Input Parameters</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:input_parameters</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="109,18", width="2.8056", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="109,36.153 109,46.664 109,60.078 109,71.725"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_in_a49316d", other_attributes=((
    ("prov:label", "Input Parameters"),
    ("prov:type", "seis_prov:input_parameters"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_in_a49316d">
    <prov:label>Input Parameters</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:input_parameters</prov:type>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_in_a49316d": {
            "prov:label": "Input Parameters",
            "prov:type": "seis_prov:input_parameters"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_in_8a4e9eb, [prov:type="seis_prov:input_parameters", prov:label="Input Parameters"])
endDocument

File

In some cases arbitrary files are needed to describe the provenance of something. Examples are special source code files who’s information cannot be represented in the Input Parameter entity. This entity allows to refer to arbitrary files. Each file is represented by a filename, a location, and a location type. The location might be a URL; then provenance discovery is simple. It might also be a filename or a path in a container format. Users are responsible to either ship the files alongside the provenance information or provide access by other means.

Properties
Name Value
prov:id file
prov:label File
Two letter ID code: fi
Required Attributes
Name Type Description
filename xsd:string The name of the file.
location xsd:string The location of the file in a way that can be discovered. Can be a URL, a file path, or something similar.
location_type xsd:string The type of location. Examples include Filename, URL, HDF5 Data Set, SFTP Address, ...
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "entity",
    "name": "file",
    "two_letter_code": "fi",
    "label": "File",
    "description": "In some cases arbitrary files are needed to describe the provenance of something. Examples are special source code files who's information cannot be represented in the ``Input Parameter`` entity. This entity allows to refer to arbitrary files. Each file is represented by a filename, a location, and a location type. The location might be a URL; then provenance discovery is simple. It might also be a filename or a path in a container format. Users are responsible to either ship the files alongside the provenance information or provide access by other means.",
    "other_seis_prov_attributes_allowed": true,
    "attributes": [
        {
            "name": "filename",
            "types": ["xsd:string"],
            "description": "The name of the file.",
            "required": true,
            "example_value": "random_file.txt"
        },
        {
            "name": "location",
            "types": ["xsd:string"],
            "description": "The location of the file in a way that can be discovered. Can be a URL, a file path, or something similar.",
            "required": true,
            "example_value": "/path/to/random_file.txt"
        },
        {
            "name": "location_type",
            "types": ["xsd:string"],
            "description": "The type of location. Examples include ``Filename``, ``URL``, ``HDF5 Data Set``, ``SFTP Address``, ...",
            "required": true,
            "example_value": "Filename"
        }
    ]
}

Example

A concrete file node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,248,160"];
	n1 [label=<File<br /><font color="#333333" point-size="10">seis_prov:sp001_fi_8584a3d</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_fi_8584a3d", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="124,134", width="2.9722", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">File</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:file</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filename">seis_prov:filename</TD>
        <TD align="left">random_file.txt</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#location">seis_prov:location</TD>
        <TD align="left">/path/to/random_file.txt</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#location_type">seis_prov:location_type</TD>
        <TD align="left">Filename</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="124,36", width="3.4444", height="0.98611"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="124,71.657 124,83.588 124,96.661 124,107.74"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_fi_8584a3d", other_attributes=((
    ("prov:label", "File"),
    ("prov:type", "seis_prov:file"),
    ("seis_prov:filename", "random_file.txt"),
    ("seis_prov:location", "/path/to/random_file.txt"),
    ("seis_prov:location_type", "Filename")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_fi_8584a3d">
    <prov:label>File</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:file</prov:type>
    <seis_prov:filename>random_file.txt</seis_prov:filename>
    <seis_prov:location>/path/to/random_file.txt</seis_prov:location>
    <seis_prov:location_type>Filename</seis_prov:location_type>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_fi_8584a3d": {
            "prov:label": "File",
            "prov:type": "seis_prov:file",
            "seis_prov:filename": "random_file.txt",
            "seis_prov:location": "/path/to/random_file.txt",
            "seis_prov:location_type": "Filename"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_fi_3a81cd9, [seis_prov:location_type="Filename", prov:type="seis_prov:file", prov:label="File", seis_prov:filename="random_file.txt", seis_prov:location="/path/to/random_file.txt"])
endDocument

Earth Model

An earth model. Its main use is to illustrate the origin of synthetic seismograms.

Properties
Name Value
prov:id earth_model
prov:label Earth Model
Two letter ID code: em
Required Attributes
Name Type Description
model_name xsd:string The name of the model.
model_type xsd:string The type of model as a short, descriptive string, e.g. '1D', '3D', 'axially symmetric', ...
Optional Attributes
Name Type Description
doi xsd:string A DOI pointing to a publication of the model.
website xsd:anyURI URL to a website with more information.
description xsd:string A short description of the model.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "entity",
    "name": "earth_model",
    "two_letter_code": "em",
    "label": "Earth Model",
    "description": "An earth model. Its main use is to illustrate the origin of synthetic seismograms.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "model_name",
            "types": ["xsd:string"],
            "description": "The name of the model.",
            "required": true,
            "example_value": "S40RTS"
        },
        {
            "name": "model_type",
            "types": ["xsd:string"],
            "description": "The type of model as a short, descriptive string, e.g. ``'1D'``, ``'3D'``, ``'axially symmetric'``, ...",
            "required": true,
            "example_value": "3D"
        },
        {
            "name": "doi",
            "types": ["xsd:string"],
            "description": "A DOI pointing to a publication of the model.",
            "required": false,
            "example_value": "10.1111/j.1365-246X.2010.04884.x"
        },
        {
            "name": "website",
            "types": ["xsd:anyURI"],
            "description": "URL to a website with more information.",
            "required": false,
            "example_value": "http://www.earth.lsa.umich.edu/~jritsema/research.html"
        },
        {
            "name": "description",
            "types": ["xsd:string"],
            "description": "A short description of the model.",
            "required": false,
            "example_value": "The famous S40RTS."
        }
    ]
}

Minimal Example

A concrete earth_model node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid earth_model node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,242,148"];
	n1 [label=<Earth Model<br /><font color="#333333" point-size="10">seis_prov:sp001_em_1cc94ec</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_em_1cc94ec", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="121,122", width="3.1389", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Earth Model</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:earth_model</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#model_name">seis_prov:model_name</TD>
        <TD align="left">S40RTS</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#model_type">seis_prov:model_type</TD>
        <TD align="left">3D</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="121,30", width="3.3611", height="0.81944"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="121,59.616 121,71.277 121,84.554 121,95.854"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_em_1cc94ec", other_attributes=((
    ("prov:label", "Earth Model"),
    ("prov:type", "seis_prov:earth_model"),
    ("seis_prov:model_name", "S40RTS"),
    ("seis_prov:model_type", "3D")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_em_1cc94ec">
    <prov:label>Earth Model</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:earth_model</prov:type>
    <seis_prov:model_name>S40RTS</seis_prov:model_name>
    <seis_prov:model_type>3D</seis_prov:model_type>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_em_1cc94ec": {
            "prov:label": "Earth Model",
            "prov:type": "seis_prov:earth_model",
            "seis_prov:model_name": "S40RTS",
            "seis_prov:model_type": "3D"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_em_1cc94ec, [seis_prov:model_name="S40RTS", prov:type="seis_prov:earth_model", prov:label="Earth Model", seis_prov:model_type="3D"])
endDocument

Full Example

A concrete earth_model node example is illustrated here as a graph, in code, and in various representations. This is a full earth_model node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,400,184"];
	n1 [label=<Earth Model<br /><font color="#333333" point-size="10">seis_prov:sp001_em_cb7d70a</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_em_cb7d70a", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="200,158", width="3.1667", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Earth Model</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:earth_model</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#description">seis_prov:description</TD>
        <TD align="left">The famous S40RTS.</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#doi">seis_prov:doi</TD>
        <TD align="left">10.1111/j.1365-246X.2010.04884.x</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#model_name">seis_prov:model_name</TD>
        <TD align="left">S40RTS</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#model_type">seis_prov:model_type</TD>
        <TD align="left">3D</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#website">seis_prov:website</TD>
        <TD align="left" href="http://www.earth.lsa.umich.edu/~jritsema/research.html">http://www.earth.lsa.umich.edu/~jritsema/research.html</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="200,48", width="5.5556", height="1.3194"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="200,95.608 200,108.03 200,120.97 200,131.82"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_em_cb7d70a", other_attributes=((
    ("prov:label", "Earth Model"),
    ("prov:type", "seis_prov:earth_model"),
    ("seis_prov:model_name", "S40RTS"),
    ("seis_prov:model_type", "3D"),
    ("seis_prov:doi", "10.1111/j.1365-246X.2010.04884.x"),
    ("seis_prov:website", prov.model.Literal(
        'http://www.earth.lsa.umich.edu/~jritsema/research.html',
        prov.constants.XSD_ANYURI)),
    ("seis_prov:description", "The famous S40RTS.")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_em_cb7d70a">
    <prov:label>Earth Model</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:earth_model</prov:type>
    <seis_prov:description>The famous S40RTS.</seis_prov:description>
    <seis_prov:doi>10.1111/j.1365-246X.2010.04884.x</seis_prov:doi>
    <seis_prov:model_name>S40RTS</seis_prov:model_name>
    <seis_prov:model_type>3D</seis_prov:model_type>
    <seis_prov:website xsi:type="xsd:anyURI">http://www.earth.lsa.umich.edu/~jritsema/research.html</seis_prov:website>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_em_cb7d70a": {
            "prov:label": "Earth Model",
            "prov:type": "seis_prov:earth_model",
            "seis_prov:description": "The famous S40RTS.",
            "seis_prov:doi": "10.1111/j.1365-246X.2010.04884.x",
            "seis_prov:model_name": "S40RTS",
            "seis_prov:model_type": "3D",
            "seis_prov:website": {
                "$": "http://www.earth.lsa.umich.edu/~jritsema/research.html",
                "type": "xsd:anyURI"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_em_1cc94ec, [seis_prov:model_name="S40RTS", prov:type="seis_prov:earth_model", prov:label="Earth Model", seis_prov:model_type="3D"])
endDocument

Cross Correlation Stack

A stack of cross correlations.

Properties
Name Value
prov:id cross_correlation_stack
prov:label Cross Correlation Stack
Two letter ID code: cs
Required Attributes
None
Optional Attributes
Name Type Description
correlation_type xsd:string The type of performed cross correlations as a string. Only useful if the same for all cross correlations, otherwise that information must be stored in the provenance records of the single cross correlations.
correlation_count xsd:positiveInteger The number of cross correlations used to calculate the stack.
stacking_method xsd:string The method used to create the stack.
seed_id_a xsd:string The SEED identifier of station A.
seed_id_b xsd:string The SEED identifier of station B.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "entity",
    "name": "cross_correlation_stack",
    "two_letter_code": "cs",
    "label": "Cross Correlation Stack",
    "description": "A stack of cross correlations.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "correlation_type",
            "types": ["xsd:string"],
            "description": "The type of performed cross correlations as a string. Only useful if the same for all cross correlations, otherwise that information must be stored in the provenance records of the single cross correlations.",
            "required": false,
            "example_value": "Phase Cross Correlation"
        },
        {
            "name": "correlation_count",
            "types": ["xsd:positiveInteger"],
            "description": "The number of cross correlations used to calculate the stack.",
            "required": false,
            "example_value": 48
        },
        {
            "name": "stacking_method",
            "types": ["xsd:string"],
            "description": "The method used to create the stack.",
            "required": false,
            "example_value": "mean"
        },
        {
            "name": "seed_id_a",
            "types": ["xsd:string"],
            "description": "The SEED identifier of station A.",
            "required": false,
            "pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
            "example_value": "BW.FURT..BHZ"
        },
        {
            "name": "seed_id_b",
            "types": ["xsd:string"],
            "description": "The SEED identifier of station B.",
            "required": false,
            "pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
            "example_value": "BW.ALTM..BHZ"
        }
    ]
}

Minimal Example

A concrete cross_correlation_stack node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cross_correlation_stack node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,254,124"];
	n1 [label=<Cross Correlation Stack<br /><font color="#333333" point-size="10">seis_prov:sp001_cs_67f9bf6</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_cs_67f9bf6", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="127,98", width="3.5278", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cross Correlation Stack</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cross_correlation_stack</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="127,18", width="3.1667", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="127,36.153 127,46.664 127,60.078 127,71.725"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_cs_67f9bf6", other_attributes=((
    ("prov:label", "Cross Correlation Stack"),
    ("prov:type", "seis_prov:cross_correlation_stack"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_cs_67f9bf6">
    <prov:label>Cross Correlation Stack</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cross_correlation_stack</prov:type>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_cs_67f9bf6": {
            "prov:label": "Cross Correlation Stack",
            "prov:type": "seis_prov:cross_correlation_stack"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_cs_67f9bf6, [prov:type="seis_prov:cross_correlation_stack", prov:label="Cross Correlation Stack"])
endDocument

Full Example

A concrete cross_correlation_stack node example is illustrated here as a graph, in code, and in various representations. This is a full cross_correlation_stack node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,314,184"];
	n1 [label=<Cross Correlation Stack<br /><font color="#333333" point-size="10">seis_prov:sp001_cs_725f92c</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_cs_725f92c", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="157,158", width="3.5278", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cross Correlation Stack</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cross_correlation_stack</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#correlation_count">seis_prov:correlation_count</TD>
        <TD align="left">"48" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#correlation_type">seis_prov:correlation_type</TD>
        <TD align="left">Phase Cross Correlation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#seed_id_a">seis_prov:seed_id_a</TD>
        <TD align="left">BW.FURT..BHZ</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#seed_id_b">seis_prov:seed_id_b</TD>
        <TD align="left">BW.ALTM..BHZ</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#stacking_method">seis_prov:stacking_method</TD>
        <TD align="left">mean</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="157,48", width="4.3611", height="1.3194"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="157,95.608 157,108.03 157,120.97 157,131.82"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_cs_725f92c", other_attributes=((
    ("prov:label", "Cross Correlation Stack"),
    ("prov:type", "seis_prov:cross_correlation_stack"),
    ("seis_prov:correlation_type", "Phase Cross Correlation"),
    ("seis_prov:correlation_count", prov.model.Literal(
        48,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:stacking_method", "mean"),
    ("seis_prov:seed_id_a", "BW.FURT..BHZ"),
    ("seis_prov:seed_id_b", "BW.ALTM..BHZ")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_cs_725f92c">
    <prov:label>Cross Correlation Stack</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cross_correlation_stack</prov:type>
    <seis_prov:correlation_count xsi:type="xsd:positiveInteger">48</seis_prov:correlation_count>
    <seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
    <seis_prov:seed_id_a>BW.FURT..BHZ</seis_prov:seed_id_a>
    <seis_prov:seed_id_b>BW.ALTM..BHZ</seis_prov:seed_id_b>
    <seis_prov:stacking_method>mean</seis_prov:stacking_method>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_cs_725f92c": {
            "prov:label": "Cross Correlation Stack",
            "prov:type": "seis_prov:cross_correlation_stack",
            "seis_prov:correlation_count": {
                "$": "48",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:correlation_type": "Phase Cross Correlation",
            "seis_prov:seed_id_a": "BW.FURT..BHZ",
            "seis_prov:seed_id_b": "BW.ALTM..BHZ",
            "seis_prov:stacking_method": "mean"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_cs_67f9bf6, [prov:type="seis_prov:cross_correlation_stack", prov:label="Cross Correlation Stack"])
endDocument

Cross Correlation

A cross correlation between two stations A and B. Station metadata is not recorded here as it is part of either SEED or StationXML files. Any previously applied processing is also not part of the entity but rather of the entity used by the activity generating this one.

Properties
Name Value
prov:id cross_correlation
prov:label Cross Correlation
Two letter ID code: cc
Required Attributes
Name Type Description
correlation_type xsd:string The type of performed cross correlation as a string.
Optional Attributes
Name Type Description
max_lag_time_in_sec xsd:double The maximum lag time used during the calculation in seconds.
max_correlation_coefficient xsd:double The maximum correlation coefficient
seed_id_a xsd:string The SEED identifier of station A.
seed_id_b xsd:string The SEED identifier of station B.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "entity",
    "name": "cross_correlation",
    "two_letter_code": "cc",
    "label": "Cross Correlation",
    "description": "A cross correlation between two stations A and B. Station metadata is not recorded here as it is part of either SEED or StationXML files. Any previously applied processing is also not part of the entity but rather of the entity used by the activity generating this one.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "correlation_type",
            "types": ["xsd:string"],
            "description": "The type of performed cross correlation as a string.",
            "required": true,
            "example_value": "Phase Cross Correlation"
        },
        {
            "name": "max_lag_time_in_sec",
            "types": ["xsd:double"],
            "description": "The maximum lag time used during the calculation in seconds.",
            "required": false,
            "example_value": 60.0
        },
        {
            "name": "max_correlation_coefficient",
            "types": ["xsd:double"],
            "description": "The maximum correlation coefficient",
            "required": false,
            "example_value": 0.88
        },
        {
            "name": "seed_id_a",
            "types": ["xsd:string"],
            "description": "The SEED identifier of station A.",
            "required": false,
            "pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
            "example_value": "BW.FURT..BHZ"
        },
        {
            "name": "seed_id_b",
            "types": ["xsd:string"],
            "description": "The SEED identifier of station B.",
            "required": false,
            "pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
            "example_value": "BW.ALTM..BHZ"
        }
    ]
}

Minimal Example

A concrete cross_correlation node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cross_correlation node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,278,136"];
	n1 [label=<Cross Correlation<br /><font color="#333333" point-size="10">seis_prov:sp001_cc_22661c5</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_cc_22661c5", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="139,110", width="3.0556", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cross Correlation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cross_correlation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#correlation_type">seis_prov:correlation_type</TD>
        <TD align="left">Phase Cross Correlation</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="139,24", width="3.8611", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="139,47.956 139,59.089 139,72.356 139,83.759"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_cc_22661c5", other_attributes=((
    ("prov:label", "Cross Correlation"),
    ("prov:type", "seis_prov:cross_correlation"),
    ("seis_prov:correlation_type", "Phase Cross Correlation")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_cc_22661c5">
    <prov:label>Cross Correlation</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cross_correlation</prov:type>
    <seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_cc_22661c5": {
            "prov:label": "Cross Correlation",
            "prov:type": "seis_prov:cross_correlation",
            "seis_prov:correlation_type": "Phase Cross Correlation"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_cc_22661c5, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlation", prov:label="Cross Correlation"])
endDocument

Full Example

A concrete cross_correlation node example is illustrated here as a graph, in code, and in various representations. This is a full cross_correlation node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,332,184"];
	n1 [label=<Cross Correlation<br /><font color="#333333" point-size="10">seis_prov:sp001_cc_3356922</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_cc_3356922", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="166,158", width="3.0833", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cross Correlation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cross_correlation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#correlation_type">seis_prov:correlation_type</TD>
        <TD align="left">Phase Cross Correlation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#max_correlation_coefficient">seis_prov:max_correlation_coefficient</TD>
        <TD align="left">0.88</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#max_lag_time_in_sec">seis_prov:max_lag_time_in_sec</TD>
        <TD align="left">60.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#seed_id_a">seis_prov:seed_id_a</TD>
        <TD align="left">BW.FURT..BHZ</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#seed_id_b">seis_prov:seed_id_b</TD>
        <TD align="left">BW.ALTM..BHZ</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="166,48", width="4.6111", height="1.3194"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="166,95.608 166,108.03 166,120.97 166,131.82"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_cc_3356922", other_attributes=((
    ("prov:label", "Cross Correlation"),
    ("prov:type", "seis_prov:cross_correlation"),
    ("seis_prov:correlation_type", "Phase Cross Correlation"),
    ("seis_prov:max_lag_time_in_sec", prov.model.Literal(
        60.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:max_correlation_coefficient", prov.model.Literal(
        0.88,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:seed_id_a", "BW.FURT..BHZ"),
    ("seis_prov:seed_id_b", "BW.ALTM..BHZ")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_cc_3356922">
    <prov:label>Cross Correlation</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cross_correlation</prov:type>
    <seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
    <seis_prov:max_correlation_coefficient xsi:type="xsd:double">0.88</seis_prov:max_correlation_coefficient>
    <seis_prov:max_lag_time_in_sec xsi:type="xsd:double">60.0</seis_prov:max_lag_time_in_sec>
    <seis_prov:seed_id_a>BW.FURT..BHZ</seis_prov:seed_id_a>
    <seis_prov:seed_id_b>BW.ALTM..BHZ</seis_prov:seed_id_b>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_cc_3356922": {
            "prov:label": "Cross Correlation",
            "prov:type": "seis_prov:cross_correlation",
            "seis_prov:correlation_type": "Phase Cross Correlation",
            "seis_prov:max_correlation_coefficient": {
                "$": 0.88,
                "type": "xsd:double"
            },
            "seis_prov:max_lag_time_in_sec": {
                "$": 60.0,
                "type": "xsd:double"
            },
            "seis_prov:seed_id_a": "BW.FURT..BHZ",
            "seis_prov:seed_id_b": "BW.ALTM..BHZ"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_cc_22661c5, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlation", prov:label="Cross Correlation"])
endDocument

Adjoint Source

One component of an adjoint source used in adjoint simulations. The location can be specified either in geographical coordinates (WGS84) or as the SEED identifier of the corresponding station. The definition of geographic coordinates is the same as in StationXML. Any processing applied to the data before the adjoint source has been calculated (window picking, filtering, ...) has to be described by provenance records on the waveform entities.

Properties
Name Value
prov:id adjoint_source
prov:label Adjoint Source
Two letter ID code: as
Required Attributes
Name Type Description
adjoint_source_type xsd:string A string denoting the type of adjoint source.
Optional Attributes
Name Type Description
latitude xsd:double The latitude of the station in WGS84.
longitude xsd:double The longitude of the station in WGS84.
elevation_in_m xsd:double The elevation of the station in meter above the null level on WGS84.
local_depth_in_m xsd:double The burial of the station in meter.
orientation xsd:string The orientation of the adjoint source, either N (north), E (east), Z (up), T (transverse), or R (radial). If that is not sufficient, please use the dip and azimuth attributes.
dip xsd:double Dip of the component in degrees, down from horizontal, same definition as in StationXML.
azimuth xsd:double Azimuth of the component in degrees from north, clockwise, same definition as in StationXML.
station_id xsd:string The id of the recording station.
number_of_samples xsd:positiveInteger The number of samples in the trace.
sampling_rate xsd:double The sampling rate of the data.
units xsd:string Units of the adjoint source as a common abbreviation, e.g. m, m/s, nm/s^2, ...
adjoint_source_type_uri xsd:anyURI A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication.
misfit_value xsd:double The calculation of many types of adjoint sources will automatically yield a misfit value denoting the similarity of usually observed and synthetic seismograms.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "entity",
    "name": "adjoint_source",
    "two_letter_code": "as",
    "label": "Adjoint Source",
    "description": "One component of an adjoint source used in adjoint simulations. The location can be specified either in geographical coordinates (WGS84) or as the SEED identifier of the corresponding station. The definition of geographic coordinates is the same as in StationXML. Any processing applied to the data before the adjoint source has been calculated (window picking, filtering, ...) has to be described by provenance records on the waveform entities.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
      {
        "name": "latitude",
        "types": ["xsd:double"],
        "description": "The latitude of the station in WGS84.",
        "required": false,
        "example_value": 48.0
       },
       {
         "name": "longitude",
         "types": ["xsd:double"],
         "description": "The longitude of the station in WGS84.",
         "required": false,
         "example_value": 12.1
       },
       {
         "name": "elevation_in_m",
         "types": ["xsd:double"],
         "description": "The elevation of the station in meter above the null level on WGS84.",
         "required": false,
         "example_value": 658.0
       },
       {
         "name": "local_depth_in_m",
         "types": ["xsd:double"],
         "description": "The burial of the station in meter.",
         "required": false,
         "example_value": 0.0
       },
       {
         "name": "orientation",
         "types": ["xsd:string"],
         "description": "The orientation of the adjoint source, either N (north), E (east), Z (up), T (transverse), or R (radial). If that is not sufficient, please use the dip and azimuth attributes.",
         "required": false,
         "example_value": "N"
       },
       {
         "name": "dip",
         "types": ["xsd:double"],
         "description": "Dip of the component in degrees, down from horizontal, same definition as in StationXML.",
         "required": false,
         "example_value": 0.0
       },
       {
         "name": "azimuth",
         "types": ["xsd:double"],
         "description": "Azimuth of the component in degrees from north, clockwise, same definition as in StationXML.",
         "required": false,
         "example_value": 90.0

       },
       {
         "name": "station_id",
         "types": ["xsd:string"],
         "description": "The id of the recording station.",
         "required": false,
         "pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
         "example_value": "BW.FURT..BHZ"
       },
       {
         "name": "number_of_samples",
         "types": ["xsd:positiveInteger"],
         "description": "The number of samples in the trace.",
         "required": false,
         "example_value": 20000
       },
       {
         "name": "sampling_rate",
         "types": ["xsd:double"],
         "description": "The sampling rate of the data.",
         "required": false,
         "example_value": 20.0
       },
       {
         "name": "units",
         "types": ["xsd:string"],
         "description": "Units of the adjoint source as a common abbreviation, e.g. m, m/s, nm/s^2, ...",
         "required": false,
         "example_value": "m/s"
       },
       {
         "name": "adjoint_source_type",
         "types": ["xsd:string"],
         "description": "A string denoting the type of adjoint source.",
         "required": true,
         "example_value": "Time Frequency Phase"
       },
       {
         "name": "adjoint_source_type_uri",
         "types": ["xsd:anyURI"],
         "description": "A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication.",
         "required": false,
         "example_value": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x"
       },
       {
         "name": "misfit_value",
         "types": ["xsd:double"],
         "description": "The calculation of many types of adjoint sources will automatically yield a misfit value denoting the similarity of usually observed and synthetic seismograms.",
         "required": false,
         "example_value": 0.08
       }
    ]
}

Minimal Example

A concrete adjoint_source node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid adjoint_source node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,284,136"];
	n1 [label=<Adjoint Source<br /><font color="#333333" point-size="10">seis_prov:sp001_as_cd84e87</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_as_cd84e87", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="142,110", width="3.0833", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Adjoint Source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:adjoint_source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#adjoint_source_type">seis_prov:adjoint_source_type</TD>
        <TD align="left">Time Frequency Phase</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="142,24", width="3.9444", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="142,47.956 142,59.089 142,72.356 142,83.759"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_as_cd84e87", other_attributes=((
    ("prov:label", "Adjoint Source"),
    ("prov:type", "seis_prov:adjoint_source"),
    ("seis_prov:adjoint_source_type", "Time Frequency Phase")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_as_cd84e87">
    <prov:label>Adjoint Source</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:adjoint_source</prov:type>
    <seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_as_cd84e87": {
            "prov:label": "Adjoint Source",
            "prov:type": "seis_prov:adjoint_source",
            "seis_prov:adjoint_source_type": "Time Frequency Phase"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_as_cd84e87, [prov:type="seis_prov:adjoint_source", prov:label="Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument

Full Example

A concrete adjoint_source node example is illustrated here as a graph, in code, and in various representations. This is a full adjoint_source node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,430,292"];
	n1 [label=<Adjoint Source<br /><font color="#333333" point-size="10">seis_prov:sp001_as_ff956c5</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_as_ff956c5", color="#808080", fillcolor="#FFFC87", shape=oval, style=filled, pos="215,266", width="2.9722", height="0.72222"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Adjoint Source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:adjoint_source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#adjoint_source_type">seis_prov:adjoint_source_type</TD>
        <TD align="left">Time Frequency Phase</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#adjoint_source_type_uri">seis_prov:adjoint_source_type_uri</TD>
        <TD align="left" href="http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x">http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#azimuth">seis_prov:azimuth</TD>
        <TD align="left">90.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#dip">seis_prov:dip</TD>
        <TD align="left">0.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#elevation_in_m">seis_prov:elevation_in_m</TD>
        <TD align="left">658.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#latitude">seis_prov:latitude</TD>
        <TD align="left">48.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#local_depth_in_m">seis_prov:local_depth_in_m</TD>
        <TD align="left">0.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#longitude">seis_prov:longitude</TD>
        <TD align="left">12.1</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#misfit_value">seis_prov:misfit_value</TD>
        <TD align="left">0.08</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#number_of_samples">seis_prov:number_of_samples</TD>
        <TD align="left">"20000" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#orientation">seis_prov:orientation</TD>
        <TD align="left">N</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#sampling_rate">seis_prov:sampling_rate</TD>
        <TD align="left">20.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#station_id">seis_prov:station_id</TD>
        <TD align="left">BW.FURT..BHZ</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#units">seis_prov:units</TD>
        <TD align="left">m/s</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="215,102", width="5.9722", height="2.8194"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="215,203.53 215,216.9 215,229.53 215,239.89"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.entity("seis_prov:sp001_as_ff956c5", other_attributes=((
    ("prov:label", "Adjoint Source"),
    ("prov:type", "seis_prov:adjoint_source"),
    ("seis_prov:latitude", prov.model.Literal(
        48.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:longitude", prov.model.Literal(
        12.1,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:elevation_in_m", prov.model.Literal(
        658.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:local_depth_in_m", prov.model.Literal(
        0.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:orientation", "N"),
    ("seis_prov:dip", prov.model.Literal(
        0.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:azimuth", prov.model.Literal(
        90.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:station_id", "BW.FURT..BHZ"),
    ("seis_prov:number_of_samples", prov.model.Literal(
        20000,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:sampling_rate", prov.model.Literal(
        20.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:units", "m/s"),
    ("seis_prov:adjoint_source_type", "Time Frequency Phase"),
    ("seis_prov:adjoint_source_type_uri", prov.model.Literal(
        'http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x',
        prov.constants.XSD_ANYURI)),
    ("seis_prov:misfit_value", prov.model.Literal(
        0.08,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="seis_prov:sp001_as_ff956c5">
    <prov:label>Adjoint Source</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:adjoint_source</prov:type>
    <seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
    <seis_prov:adjoint_source_type_uri xsi:type="xsd:anyURI">http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x</seis_prov:adjoint_source_type_uri>
    <seis_prov:azimuth xsi:type="xsd:double">90.0</seis_prov:azimuth>
    <seis_prov:dip xsi:type="xsd:double">0.0</seis_prov:dip>
    <seis_prov:elevation_in_m xsi:type="xsd:double">658.0</seis_prov:elevation_in_m>
    <seis_prov:latitude xsi:type="xsd:double">48.0</seis_prov:latitude>
    <seis_prov:local_depth_in_m xsi:type="xsd:double">0.0</seis_prov:local_depth_in_m>
    <seis_prov:longitude xsi:type="xsd:double">12.1</seis_prov:longitude>
    <seis_prov:misfit_value xsi:type="xsd:double">0.08</seis_prov:misfit_value>
    <seis_prov:number_of_samples xsi:type="xsd:positiveInteger">20000</seis_prov:number_of_samples>
    <seis_prov:orientation>N</seis_prov:orientation>
    <seis_prov:sampling_rate xsi:type="xsd:double">20.0</seis_prov:sampling_rate>
    <seis_prov:station_id>BW.FURT..BHZ</seis_prov:station_id>
    <seis_prov:units>m/s</seis_prov:units>
  </prov:entity>
</prov:document>

In the PROV-JSON serialization.

{
    "entity": {
        "seis_prov:sp001_as_ff956c5": {
            "prov:label": "Adjoint Source",
            "prov:type": "seis_prov:adjoint_source",
            "seis_prov:adjoint_source_type": "Time Frequency Phase",
            "seis_prov:adjoint_source_type_uri": {
                "$": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x",
                "type": "xsd:anyURI"
            },
            "seis_prov:azimuth": {
                "$": 90.0,
                "type": "xsd:double"
            },
            "seis_prov:dip": {
                "$": 0.0,
                "type": "xsd:double"
            },
            "seis_prov:elevation_in_m": {
                "$": 658.0,
                "type": "xsd:double"
            },
            "seis_prov:latitude": {
                "$": 48.0,
                "type": "xsd:double"
            },
            "seis_prov:local_depth_in_m": {
                "$": 0.0,
                "type": "xsd:double"
            },
            "seis_prov:longitude": {
                "$": 12.1,
                "type": "xsd:double"
            },
            "seis_prov:misfit_value": {
                "$": 0.08,
                "type": "xsd:double"
            },
            "seis_prov:number_of_samples": {
                "$": "20000",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:orientation": "N",
            "seis_prov:sampling_rate": {
                "$": 20.0,
                "type": "xsd:double"
            },
            "seis_prov:station_id": "BW.FURT..BHZ",
            "seis_prov:units": "m/s"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  entity(seis_prov:sp001_as_cd84e87, [prov:type="seis_prov:adjoint_source", prov:label="Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument

Activities

SEIS-PROV determines the type of an activity via the prov:type attribute. The following activities are currently available. Further types will be added as requested by the community.


Waveform Simulation

Generate data by running some numerical or analytic code. Must be associated with one or more agents and use some entities to achieve a useful description.

Properties
Name Value
prov:id waveform_simulation
prov:label Waveform Simulation
Two letter ID code: ws
Required Attributes
None
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "waveform_simulation",
    "two_letter_code": "ws",
    "label": "Waveform Simulation",
    "description": "Generate data by running some numerical or analytic code. Must be associated with one or more agents and use some entities to achieve a useful description.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
    ]
}

Example

A concrete waveform_simulation node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,218,110"];
	n1 [label=<Waveform Simulation<br /><font color="#333333" point-size="10">seis_prov:sp001_ws_0059e0e</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ws_0059e0e", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="109,91", width="2.3056", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Waveform Simulation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:waveform_simulation</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="109,18", width="3.0278", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="109,36.045 109,47.107 109,61.238 109,72.4"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ws_0059e0e", other_attributes=((
    ("prov:label", "Waveform Simulation"),
    ("prov:type", "seis_prov:waveform_simulation"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ws_0059e0e">
    <prov:label>Waveform Simulation</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:waveform_simulation</prov:type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ws_0059e0e": {
            "prov:label": "Waveform Simulation",
            "prov:type": "seis_prov:waveform_simulation"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ws_910a6ce, -, -, [prov:type="seis_prov:waveform_simulation", prov:label="Waveform Simulation"])
endDocument

Taper

Apply a taper window to the data.

Properties
Name Value
prov:id taper
prov:label Taper
Two letter ID code: tp
Required Attributes
Name Type Description
window_type xsd:string The type applied window.
taper_width xsd:double The width of the taper at each end. Must be between 0.0 and 0.5.
side xsd:string ‘left’, ‘right’, or ‘both’
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "taper",
    "two_letter_code": "tp",
    "label": "Taper",
    "description": "Apply a taper window to the data.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
       {
         "name": "window_type",
         "types": ["xsd:string"],
         "description": "The type applied window.",
         "required": true,
         "example_value": "Hanning"
       },
       {
         "name": "taper_width",
         "types": ["xsd:double"],
         "description": "The width of the taper at each end. Must be between 0.0 and 0.5.",
         "required": true,
         "example_value": 0.05
       },
       {
         "name": "side",
         "types": ["xsd:string"],
         "description": "`'left'`, `'right'`, or `'both'`",
         "required": true,
         "example_value": "both"
       }
    ]
}

Example

A concrete taper node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,204,146"];
	n1 [label=<Taper<br /><font color="#333333" point-size="10">seis_prov:sp001_tp_c0df3f9</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_tp_c0df3f9", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="102,127", width="2.0833", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Taper</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:taper</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#side">seis_prov:side</TD>
        <TD align="left">both</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#taper_width">seis_prov:taper_width</TD>
        <TD align="left">0.05</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#window_type">seis_prov:window_type</TD>
        <TD align="left">Hanning</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="102,36", width="2.8333", height="0.98611"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="102,71.704 102,84.252 102,97.844 102,108.41"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_tp_c0df3f9", other_attributes=((
    ("prov:label", "Taper"),
    ("prov:type", "seis_prov:taper"),
    ("seis_prov:window_type", "Hanning"),
    ("seis_prov:taper_width", prov.model.Literal(
        0.05,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:side", "both")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_tp_c0df3f9">
    <prov:label>Taper</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:taper</prov:type>
    <seis_prov:side>both</seis_prov:side>
    <seis_prov:taper_width xsi:type="xsd:double">0.05</seis_prov:taper_width>
    <seis_prov:window_type>Hanning</seis_prov:window_type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_tp_c0df3f9": {
            "prov:label": "Taper",
            "prov:type": "seis_prov:taper",
            "seis_prov:side": "both",
            "seis_prov:taper_width": {
                "$": 0.05,
                "type": "xsd:double"
            },
            "seis_prov:window_type": "Hanning"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_tp_13f0336, -, -, [seis_prov:taper_width="0.05" %% xsd:float, seis_prov:window_type="Hanning", prov:type="seis_prov:taper", prov:label="Taper", seis_prov:side="both"])
endDocument

Stack Cross Correlations

Stack a number of cross correlations.

Properties
Name Value
prov:id stack_cross_correlations
prov:label Stack Cross Correlations
Two letter ID code: sc
Required Attributes
Name Type Description
stacking_method xsd:string A string describing the method used to create the stack.
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "stack_cross_correlations",
    "two_letter_code": "sc",
    "label": "Stack Cross Correlations",
    "description": "Stack a number of cross correlations.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "stacking_method",
            "types": ["xsd:string"],
            "description": "A string describing the method used to create the stack.",
            "required": true,
            "example_value": "mean"
        }
    ]
}

Example

A concrete stack_cross_correlations node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,318,122"];
	n1 [label=<Stack Cross Correlations<br /><font color="#333333" point-size="10">seis_prov:sp001_sc_a830659</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_sc_a830659", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="159,103", width="2.5833", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Stack Cross Correlations</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:stack_cross_correlations</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#stacking_method">seis_prov:stacking_method</TD>
        <TD align="left">mean</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="159,24", width="4.4167", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="159,47.703 159,59.428 159,73.378 159,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_sc_a830659", other_attributes=((
    ("prov:label", "Stack Cross Correlations"),
    ("prov:type", "seis_prov:stack_cross_correlations"),
    ("seis_prov:stacking_method", "mean")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_sc_a830659">
    <prov:label>Stack Cross Correlations</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:stack_cross_correlations</prov:type>
    <seis_prov:stacking_method>mean</seis_prov:stacking_method>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_sc_a830659": {
            "prov:label": "Stack Cross Correlations",
            "prov:type": "seis_prov:stack_cross_correlations",
            "seis_prov:stacking_method": "mean"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_sc_f4dbee1, -, -, [seis_prov:stacking_method="mean", prov:type="seis_prov:stack_cross_correlations", prov:label="Stack Cross Correlations"])
endDocument

Simulate Response

Add an instrument’s response.

Properties
Name Value
prov:id simulate_response
prov:label Simulate Response
Two letter ID code: sr
Required Attributes
None
Optional Attributes
Name Type Description
description xsd:string Textual description of the added response. If more details are needed, then this activity should use an entity that points to the used response.
input_units xsd:string Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
output_units xsd:string Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "simulate_response",
    "two_letter_code": "sr",
    "label": "Simulate Response",
    "description": "Add an instrument’s response.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "description",
            "types": ["xsd:string"],
            "description": "Textual description of the added response. If more details are needed, then this activity should use an entity that points to the used response.",
            "required": false,
            "example_value": "Wood-Anderson Seismometer"
        },
        {
            "name": "input_units",
            "types": ["xsd:string"],
            "description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m/"
        },
        {
            "name": "output_units",
            "types": ["xsd:string"],
            "description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m/s"
        }
    ]
}

Minimal Example

A concrete simulate_response node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid simulate_response node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,208,110"];
	n1 [label=<Simulate Response<br /><font color="#333333" point-size="10">seis_prov:sp001_sr_cc1051a</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_sr_cc1051a", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="104,91", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Simulate Response</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:simulate_response</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="104,18", width="2.8889", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="104,36.045 104,47.107 104,61.238 104,72.4"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_sr_cc1051a", other_attributes=((
    ("prov:label", "Simulate Response"),
    ("prov:type", "seis_prov:simulate_response"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_sr_cc1051a">
    <prov:label>Simulate Response</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:simulate_response</prov:type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_sr_cc1051a": {
            "prov:label": "Simulate Response",
            "prov:type": "seis_prov:simulate_response"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_sr_cc1051a, -, -, [prov:type="seis_prov:simulate_response", prov:label="Simulate Response"])
endDocument

Full Example

A concrete simulate_response node example is illustrated here as a graph, in code, and in various representations. This is a full simulate_response node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,274,146"];
	n1 [label=<Simulate Response<br /><font color="#333333" point-size="10">seis_prov:sp001_sr_0825a34</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_sr_0825a34", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="137,127", width="2.1667", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Simulate Response</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:simulate_response</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#description">seis_prov:description</TD>
        <TD align="left">Wood-Anderson Seismometer</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#input_units">seis_prov:input_units</TD>
        <TD align="left">m/</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#output_units">seis_prov:output_units</TD>
        <TD align="left">m/s</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="137,36", width="3.8056", height="0.98611"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="137,71.704 137,84.252 137,97.844 137,108.41"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_sr_0825a34", other_attributes=((
    ("prov:label", "Simulate Response"),
    ("prov:type", "seis_prov:simulate_response"),
    ("seis_prov:description", "Wood-Anderson Seismometer"),
    ("seis_prov:input_units", "m/"),
    ("seis_prov:output_units", "m/s")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_sr_0825a34">
    <prov:label>Simulate Response</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:simulate_response</prov:type>
    <seis_prov:description>Wood-Anderson Seismometer</seis_prov:description>
    <seis_prov:input_units>m/</seis_prov:input_units>
    <seis_prov:output_units>m/s</seis_prov:output_units>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_sr_0825a34": {
            "prov:label": "Simulate Response",
            "prov:type": "seis_prov:simulate_response",
            "seis_prov:description": "Wood-Anderson Seismometer",
            "seis_prov:input_units": "m/",
            "seis_prov:output_units": "m/s"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_sr_cc1051a, -, -, [prov:type="seis_prov:simulate_response", prov:label="Simulate Response"])
endDocument

Rotate

Rotate multi-component data. The precise rotation angles could be inferred by comparing the dip and azimuth of inputs and outputs. Alternatively the rotation method can be specified.

Properties
Name Value
prov:id rotate
prov:label Rotate
Two letter ID code: rt
Required Attributes
None
Optional Attributes
Name Type Description
method xsd:string The rotation method.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "rotate",
    "two_letter_code": "rt",
    "label": "Rotate",
    "description": "Rotate multi-component data. The precise rotation angles could be inferred by comparing the dip and azimuth of inputs and outputs. Alternatively the rotation method can be specified.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "method",
            "types": ["xsd:string"],
            "description": "The rotation method.",
            "pattern": "NE->RT|RT->NE|ZNE->LQT|LQT->ZNE",
            "required": false,
            "example_value": "NE->RT"
        }
    ]
}

Minimal Example

A concrete rotate node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid rotate node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,152,110"];
	n1 [label=<Rotate<br /><font color="#333333" point-size="10">seis_prov:sp001_rt_41c89e3</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_rt_41c89e3", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="76,91", width="2.1111", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Rotate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:rotate</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="76,18", width="2.0278", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="76,36.045 76,47.107 76,61.238 76,72.4"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_rt_41c89e3", other_attributes=((
    ("prov:label", "Rotate"),
    ("prov:type", "seis_prov:rotate"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_rt_41c89e3">
    <prov:label>Rotate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:rotate</prov:type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_rt_41c89e3": {
            "prov:label": "Rotate",
            "prov:type": "seis_prov:rotate"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_rt_41c89e3, -, -, [prov:type="seis_prov:rotate", prov:label="Rotate"])
endDocument

Full Example

A concrete rotate node example is illustrated here as a graph, in code, and in various representations. This is a full rotate node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,184,122"];
	n1 [label=<Rotate<br /><font color="#333333" point-size="10">seis_prov:sp001_rt_302b1ab</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_rt_302b1ab", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="92,103", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Rotate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:rotate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#method">seis_prov:method</TD>
        <TD align="left">NE-&gt;RT</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="92,24", width="2.5556", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="92,47.703 92,59.428 92,73.378 92,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_rt_302b1ab", other_attributes=((
    ("prov:label", "Rotate"),
    ("prov:type", "seis_prov:rotate"),
    ("seis_prov:method", "NE->RT")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_rt_302b1ab">
    <prov:label>Rotate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:rotate</prov:type>
    <seis_prov:method>NE-&gt;RT</seis_prov:method>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_rt_302b1ab": {
            "prov:label": "Rotate",
            "prov:type": "seis_prov:rotate",
            "seis_prov:method": "NE->RT"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_rt_41c89e3, -, -, [prov:type="seis_prov:rotate", prov:label="Rotate"])
endDocument

Resample

Resample the data in the frequency domain.

Properties
Name Value
prov:id resample
prov:label Resample
Two letter ID code: rs
Required Attributes
Name Type Description
new_sampling_rate xsd:double The sampling rate after the interpolation.
Optional Attributes
Name Type Description
frequency_domain_window xsd:string The window applied to the signal in the Fourier domain.
new_start_time xsd:dateTime The time of the first sample in UTC after the interpolation.
new_number_of_samples xsd:positiveInteger The number of samples after the interpolation.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "resample",
    "two_letter_code": "rs",
    "label": "Resample",
    "description": "Resample the data in the frequency domain.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "frequency_domain_window",
            "types": ["xsd:string"],
            "description": "The window applied to the signal in the Fourier domain.",
            "required": false,
            "example_value": "Hanning"
        },
        {
            "name": "new_start_time",
            "types": ["xsd:dateTime"],
            "description": "The time of the first sample in UTC after the interpolation.",
            "required": false,
            "example_value": "2012-04-23T18:25:43.511Z"
        },
        {
            "name": "new_number_of_samples",
            "types": ["xsd:positiveInteger"],
            "description": "The number of samples after the interpolation.",
            "required": false,
            "example_value": 5000
        },
        {
            "name": "new_sampling_rate",
            "types": ["xsd:double"],
            "description": "The sampling rate after the interpolation.",
            "required": true,
            "example_value": 10.0
        }
    ]
}

Minimal Example

A concrete resample node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid resample node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,256,122"];
	n1 [label=<Resample<br /><font color="#333333" point-size="10">seis_prov:sp001_rs_d983560</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_rs_d983560", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="128,103", width="2.1667", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Resample</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:resample</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_sampling_rate">seis_prov:new_sampling_rate</TD>
        <TD align="left">10.0</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="128,24", width="3.5556", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="128,47.703 128,59.428 128,73.378 128,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_rs_d983560", other_attributes=((
    ("prov:label", "Resample"),
    ("prov:type", "seis_prov:resample"),
    ("seis_prov:new_sampling_rate", prov.model.Literal(
        10.0,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_rs_d983560">
    <prov:label>Resample</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:resample</prov:type>
    <seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_rs_d983560": {
            "prov:label": "Resample",
            "prov:type": "seis_prov:resample",
            "seis_prov:new_sampling_rate": {
                "$": 10.0,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_rs_d983560, -, -, [seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:resample", prov:label="Resample"])
endDocument

Full Example

A concrete resample node example is illustrated here as a graph, in code, and in various representations. This is a full resample node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,376,158"];
	n1 [label=<Resample<br /><font color="#333333" point-size="10">seis_prov:sp001_rs_2c36605</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_rs_2c36605", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="188,139", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Resample</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:resample</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#frequency_domain_window">seis_prov:frequency_domain_window</TD>
        <TD align="left">Hanning</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_number_of_samples">seis_prov:new_number_of_samples</TD>
        <TD align="left">"5000" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_sampling_rate">seis_prov:new_sampling_rate</TD>
        <TD align="left">10.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_start_time">seis_prov:new_start_time</TD>
        <TD align="left">2012-04-23T18:25:43.511000+00:00</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="188,42", width="5.2222", height="1.1528"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="188,83.7 188,96.537 188,110.02 188,120.46"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_rs_2c36605", other_attributes=((
    ("prov:label", "Resample"),
    ("prov:type", "seis_prov:resample"),
    ("seis_prov:frequency_domain_window", "Hanning"),
    ("seis_prov:new_start_time", prov.model.Literal(
        '2012-04-23T18:25:43.511Z',
        prov.constants.XSD_DATETIME)),
    ("seis_prov:new_number_of_samples", prov.model.Literal(
        5000,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:new_sampling_rate", prov.model.Literal(
        10.0,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_rs_2c36605">
    <prov:label>Resample</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:resample</prov:type>
    <seis_prov:frequency_domain_window>Hanning</seis_prov:frequency_domain_window>
    <seis_prov:new_number_of_samples xsi:type="xsd:positiveInteger">5000</seis_prov:new_number_of_samples>
    <seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
    <seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_rs_2c36605": {
            "prov:label": "Resample",
            "prov:type": "seis_prov:resample",
            "seis_prov:frequency_domain_window": "Hanning",
            "seis_prov:new_number_of_samples": {
                "$": "5000",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:new_sampling_rate": {
                "$": 10.0,
                "type": "xsd:double"
            },
            "seis_prov:new_start_time": {
                "$": "2012-04-23T18:25:43.511000+00:00",
                "type": "xsd:dateTime"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_rs_d983560, -, -, [seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:resample", prov:label="Resample"])
endDocument

Remove Response

Remove an instrument’s response.

Properties
Name Value
prov:id remove_response
prov:label Remove Response
Two letter ID code: rr
Required Attributes
None
Optional Attributes
Name Type Description
water_level xsd:double The applied water level in dB.
input_units xsd:string Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
output_units xsd:string Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "remove_response",
    "two_letter_code": "rr",
    "label": "Remove Response",
    "description": "Remove an instrument's response.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "water_level",
            "types": ["xsd:double"],
            "description": "The applied water level in dB.",
            "required": false,
            "example_value": 60
        },
        {
            "name": "input_units",
            "types": ["xsd:string"],
            "description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "counts"
        },
        {
            "name": "output_units",
            "types": ["xsd:string"],
            "description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m/s"
        }
    ]
}

Minimal Example

A concrete remove_response node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid remove_response node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,202,110"];
	n1 [label=<Remove Response<br /><font color="#333333" point-size="10">seis_prov:sp001_rr_8986e38</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_rr_8986e38", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="101,91", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Remove Response</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:remove_response</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="101,18", width="2.8056", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="101,36.045 101,47.107 101,61.238 101,72.4"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_rr_8986e38", other_attributes=((
    ("prov:label", "Remove Response"),
    ("prov:type", "seis_prov:remove_response"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_rr_8986e38">
    <prov:label>Remove Response</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:remove_response</prov:type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_rr_8986e38": {
            "prov:label": "Remove Response",
            "prov:type": "seis_prov:remove_response"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_rr_8986e38, -, -, [prov:type="seis_prov:remove_response", prov:label="Remove Response"])
endDocument

Full Example

A concrete remove_response node example is illustrated here as a graph, in code, and in various representations. This is a full remove_response node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,264,146"];
	n1 [label=<Remove Response<br /><font color="#333333" point-size="10">seis_prov:sp001_rr_ddcc155</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_rr_ddcc155", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="132,127", width="2.1111", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Remove Response</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:remove_response</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#input_units">seis_prov:input_units</TD>
        <TD align="left">counts</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#output_units">seis_prov:output_units</TD>
        <TD align="left">m/s</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#water_level">seis_prov:water_level</TD>
        <TD align="left">60.0</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="132,36", width="3.6667", height="0.98611"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="132,71.704 132,84.252 132,97.844 132,108.41"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_rr_ddcc155", other_attributes=((
    ("prov:label", "Remove Response"),
    ("prov:type", "seis_prov:remove_response"),
    ("seis_prov:water_level", prov.model.Literal(
        60,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:input_units", "counts"),
    ("seis_prov:output_units", "m/s")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_rr_ddcc155">
    <prov:label>Remove Response</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:remove_response</prov:type>
    <seis_prov:input_units>counts</seis_prov:input_units>
    <seis_prov:output_units>m/s</seis_prov:output_units>
    <seis_prov:water_level xsi:type="xsd:double">60.0</seis_prov:water_level>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_rr_ddcc155": {
            "prov:label": "Remove Response",
            "prov:type": "seis_prov:remove_response",
            "seis_prov:input_units": "counts",
            "seis_prov:output_units": "m/s",
            "seis_prov:water_level": {
                "$": 60.0,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_rr_8986e38, -, -, [prov:type="seis_prov:remove_response", prov:label="Remove Response"])
endDocument

Pad

Pad the data resulting in a longer trace.

Properties
Name Value
prov:id pad
prov:label Pad
Two letter ID code: pd
Required Attributes
Name Type Description
fill_value xsd:decimal, xsd:integer The value that will be used to fill missing values with.
Optional Attributes
Name Type Description
new_start_time xsd:dateTime The time of the first sample in UTC after padding it.
new_end_time xsd:dateTime The time of the last sample in UTC after padding it.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "pad",
    "two_letter_code": "pd",
    "label": "Pad",
    "description": "Pad the data resulting in a longer trace.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "fill_value",
            "types": ["xsd:decimal", "xsd:integer"],
            "description": "The value that will be used to fill missing values with.",
            "required": true,
            "example_value": 0.0
        },
        {
            "name": "new_start_time",
            "types": ["xsd:dateTime"],
            "description": "The time of the first sample in UTC after padding it.",
            "required": false,
            "example_value": "2012-04-23T18:25:43.511Z"
        },
        {
            "name": "new_end_time",
            "types": ["xsd:dateTime"],
            "description": "The time of the last sample in UTC after padding it.",
            "required": false,
            "example_value": "2012-04-23T20:25:43.511Z"
        }
    ]
}

Minimal Example

A concrete pad node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid pad node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,214,122"];
	n1 [label=<Pad<br /><font color="#333333" point-size="10">seis_prov:sp001_pd_5936410</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_pd_5936410", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="107,103", width="2.1944", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Pad</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:pad</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#fill_value">seis_prov:fill_value</TD>
        <TD align="left">"0.0" %% xsd:decimal</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="107,24", width="2.9722", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="107,47.703 107,59.428 107,73.378 107,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_pd_5936410", other_attributes=((
    ("prov:label", "Pad"),
    ("prov:type", "seis_prov:pad"),
    ("seis_prov:fill_value", prov.model.Literal(
        0.0,
        prov.constants.XSD_DECIMAL))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_pd_5936410">
    <prov:label>Pad</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:pad</prov:type>
    <seis_prov:fill_value xsi:type="xsd:decimal">0.0</seis_prov:fill_value>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_pd_5936410": {
            "prov:label": "Pad",
            "prov:type": "seis_prov:pad",
            "seis_prov:fill_value": {
                "$": "0.0",
                "type": "xsd:decimal"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_pd_5936410, -, -, [prov:type="seis_prov:pad", prov:label="Pad", seis_prov:fill_value="0.0" %% xsd:decimal])
endDocument

Full Example

A concrete pad node example is illustrated here as a graph, in code, and in various representations. This is a full pad node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,322,146"];
	n1 [label=<Pad<br /><font color="#333333" point-size="10">seis_prov:sp001_pd_d953f99</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_pd_d953f99", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="161,127", width="2.1667", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Pad</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:pad</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#fill_value">seis_prov:fill_value</TD>
        <TD align="left">"0.0" %% xsd:decimal</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_end_time">seis_prov:new_end_time</TD>
        <TD align="left">2012-04-23T20:25:43.511000+00:00</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_start_time">seis_prov:new_start_time</TD>
        <TD align="left">2012-04-23T18:25:43.511000+00:00</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="161,36", width="4.4722", height="0.98611"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="161,71.704 161,84.252 161,97.844 161,108.41"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_pd_d953f99", other_attributes=((
    ("prov:label", "Pad"),
    ("prov:type", "seis_prov:pad"),
    ("seis_prov:fill_value", prov.model.Literal(
        0.0,
        prov.constants.XSD_DECIMAL)),
    ("seis_prov:new_start_time", prov.model.Literal(
        '2012-04-23T18:25:43.511Z',
        prov.constants.XSD_DATETIME)),
    ("seis_prov:new_end_time", prov.model.Literal(
        '2012-04-23T20:25:43.511Z',
        prov.constants.XSD_DATETIME))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_pd_d953f99">
    <prov:label>Pad</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:pad</prov:type>
    <seis_prov:fill_value xsi:type="xsd:decimal">0.0</seis_prov:fill_value>
    <seis_prov:new_end_time xsi:type="xsd:dateTime">2012-04-23T20:25:43.511000+00:00</seis_prov:new_end_time>
    <seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_pd_d953f99": {
            "prov:label": "Pad",
            "prov:type": "seis_prov:pad",
            "seis_prov:fill_value": {
                "$": "0.0",
                "type": "xsd:decimal"
            },
            "seis_prov:new_end_time": {
                "$": "2012-04-23T20:25:43.511000+00:00",
                "type": "xsd:dateTime"
            },
            "seis_prov:new_start_time": {
                "$": "2012-04-23T18:25:43.511000+00:00",
                "type": "xsd:dateTime"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_pd_5936410, -, -, [prov:type="seis_prov:pad", prov:label="Pad", seis_prov:fill_value="0.0" %% xsd:decimal])
endDocument

Normalize

Normalize the data.

Properties
Name Value
prov:id normalize
prov:label Normalize
Two letter ID code: nm
Required Attributes
Name Type Description
normalization_method xsd:string The used normalization method.
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "normalize",
    "two_letter_code": "nm",
    "label": "Normalize",
    "description": "Normalize the data.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "normalization_method",
            "types": ["xsd:string"],
            "description": "The used normalization method.",
            "required": true,
            "example_value": "Amplitude"
        }
    ]
}

Example

A concrete normalize node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,274,122"];
	n1 [label=<Normalize<br /><font color="#333333" point-size="10">seis_prov:sp001_nm_5464d2c</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_nm_5464d2c", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="137,103", width="2.25", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Normalize</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:normalize</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#normalization_method">seis_prov:normalization_method</TD>
        <TD align="left">Amplitude</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="137,24", width="3.8056", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="137,47.703 137,59.428 137,73.378 137,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_nm_5464d2c", other_attributes=((
    ("prov:label", "Normalize"),
    ("prov:type", "seis_prov:normalize"),
    ("seis_prov:normalization_method", "Amplitude")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_nm_5464d2c">
    <prov:label>Normalize</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:normalize</prov:type>
    <seis_prov:normalization_method>Amplitude</seis_prov:normalization_method>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_nm_5464d2c": {
            "prov:label": "Normalize",
            "prov:type": "seis_prov:normalize",
            "seis_prov:normalization_method": "Amplitude"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_nm_0b08d9e, -, -, [prov:type="seis_prov:normalize", prov:label="Normalize", seis_prov:normalization_method="Amplitude"])
endDocument

Multiply

Multiply each value of the data with a certain factor. This is implied by many operations but sometimes useful to capture in its own right.

Properties
Name Value
prov:id multiply
prov:label Multiply
Two letter ID code: mp
Required Attributes
Name Type Description
factor xsd:double The factor by which to multiply.
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "multiply",
    "two_letter_code": "mp",
    "label": "Multiply",
    "description": "Multiply each value of the data with a certain factor. This is implied by many operations but sometimes useful to capture in its own right.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "factor",
            "types": ["xsd:double"],
            "description": "The factor by which to multiply.",
            "required": true,
            "example_value": 2.5
        }
    ]
}

Example

A concrete multiply node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,184,122"];
	n1 [label=<Multiply<br /><font color="#333333" point-size="10">seis_prov:sp001_mp_1c87e3d</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_mp_1c87e3d", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="92,103", width="2.25", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Multiply</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:multiply</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#factor">seis_prov:factor</TD>
        <TD align="left">2.5</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="92,24", width="2.5556", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="92,47.703 92,59.428 92,73.378 92,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_mp_1c87e3d", other_attributes=((
    ("prov:label", "Multiply"),
    ("prov:type", "seis_prov:multiply"),
    ("seis_prov:factor", prov.model.Literal(
        2.5,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_mp_1c87e3d">
    <prov:label>Multiply</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:multiply</prov:type>
    <seis_prov:factor xsi:type="xsd:double">2.5</seis_prov:factor>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_mp_1c87e3d": {
            "prov:label": "Multiply",
            "prov:type": "seis_prov:multiply",
            "seis_prov:factor": {
                "$": 2.5,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_mp_1ec7fde, -, -, [prov:type="seis_prov:multiply", prov:label="Multiply", seis_prov:factor="2.5" %% xsd:float])
endDocument

Merge

Merge several traces into one. This is very implementation dependent and thus the activity should be associated with a software agent.

Properties
Name Value
prov:id merge
prov:label Merge
Two letter ID code: mg
Required Attributes
Name Type Description
merging_strategy xsd:string A string describing the applied merging strategy.
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "merge",
    "two_letter_code": "mg",
    "label": "Merge",
    "description": "Merge several traces into one. This is very implementation dependent and thus the activity should be associated with a software agent.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "merging_strategy",
            "types": ["xsd:string"],
            "description": "A string describing the applied merging strategy.",
            "required": true,
            "example_value": "discard overlaps"
        }
    ]
}

Example

A concrete merge node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,234,122"];
	n1 [label=<Merge<br /><font color="#333333" point-size="10">seis_prov:sp001_mg_3e712b5</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_mg_3e712b5", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="117,103", width="2.25", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Merge</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:merge</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#merging_strategy">seis_prov:merging_strategy</TD>
        <TD align="left">discard overlaps</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="117,24", width="3.25", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="117,47.703 117,59.428 117,73.378 117,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_mg_3e712b5", other_attributes=((
    ("prov:label", "Merge"),
    ("prov:type", "seis_prov:merge"),
    ("seis_prov:merging_strategy", "discard overlaps")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_mg_3e712b5">
    <prov:label>Merge</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:merge</prov:type>
    <seis_prov:merging_strategy>discard overlaps</seis_prov:merging_strategy>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_mg_3e712b5": {
            "prov:label": "Merge",
            "prov:type": "seis_prov:merge",
            "seis_prov:merging_strategy": "discard overlaps"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_mg_1c1ca74, -, -, [seis_prov:merging_strategy="discard overlaps", prov:type="seis_prov:merge", prov:label="Merge"])
endDocument

Lowpass Filter

Lowpass the data.

Properties
Name Value
prov:id lowpass_filter
prov:label Lowpass Filter
Two letter ID code: lp
Required Attributes
Name Type Description
filter_type xsd:string The type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ...
Optional Attributes
Name Type Description
corner_frequency xsd:double The corner frequency of the filter if applicable in Hz
filter_order xsd:positiveInteger The order of the filter if applicable.
number_of_passes xsd:positiveInteger The number of filter passes if applicable.
chebychev_transition_bw xsd:double The transition band width in the case of a Chebychev filter.
chebychev_attenuation_factor xsd:double The attenuation factor in the case of a Chebychev filter.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "lowpass_filter",
    "two_letter_code": "lp",
    "label": "Lowpass Filter",
    "description": "Lowpass the data.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "filter_type",
            "types": ["xsd:string"],
            "description": "The type of filter, e.g. `Butterworth`, `FIR`, `Chebyshev Type I/II`, `Bessel`, ...",
            "required": true,
            "example_value": "Butterworth"
        },
        {
            "name": "corner_frequency",
            "types": ["xsd:double"],
            "description": "The corner frequency of the filter if applicable in Hz",
            "required": false,
            "example_value": 5.0
        },
        {
            "name": "filter_order",
            "types": ["xsd:positiveInteger"],
            "description": "The order of the filter if applicable.",
            "required": false,
            "example_value": 2
        },
        {
            "name": "number_of_passes",
            "types": ["xsd:positiveInteger"],
            "description": "The number of filter passes if applicable.",
            "required": false,
            "example_value": 1
        },
        {
            "name": "chebychev_transition_bw",
            "types": ["xsd:double"],
            "required": false,
            "description": "The transition band width in the case of a Chebychev filter.",
            "example_value": 10.0,
            "skip_example_in_doc": true
        },
        {
            "name": "chebychev_attenuation_factor",
            "types": ["xsd:double"],
            "required": false,
            "description": "The attenuation factor in the case of a Chebychev filter.",
            "example_value": 20.0,
            "skip_example_in_doc": true
        }
    ]
}

Minimal Example

A concrete lowpass_filter node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid lowpass_filter node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,230,122"];
	n1 [label=<Lowpass Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_lp_a0a7b38</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_lp_a0a7b38", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="115,103", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Lowpass Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:lowpass_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="115,24", width="3.1944", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="115,47.703 115,59.428 115,73.378 115,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_lp_a0a7b38", other_attributes=((
    ("prov:label", "Lowpass Filter"),
    ("prov:type", "seis_prov:lowpass_filter"),
    ("seis_prov:filter_type", "Butterworth")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_lp_a0a7b38">
    <prov:label>Lowpass Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:lowpass_filter</prov:type>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_lp_a0a7b38": {
            "prov:label": "Lowpass Filter",
            "prov:type": "seis_prov:lowpass_filter",
            "seis_prov:filter_type": "Butterworth"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_lp_a0a7b38, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:lowpass_filter", prov:label="Lowpass Filter"])
endDocument

Full Example

A concrete lowpass_filter node example is illustrated here as a graph, in code, and in various representations. This is a full lowpass_filter node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,290,158"];
	n1 [label=<Lowpass Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_lp_8a5ac74</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_lp_8a5ac74", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="145,139", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Lowpass Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:lowpass_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#corner_frequency">seis_prov:corner_frequency</TD>
        <TD align="left">5.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_order">seis_prov:filter_order</TD>
        <TD align="left">"2" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#number_of_passes">seis_prov:number_of_passes</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="145,42", width="4.0278", height="1.1528"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="145,83.7 145,96.537 145,110.02 145,120.46"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_lp_8a5ac74", other_attributes=((
    ("prov:label", "Lowpass Filter"),
    ("prov:type", "seis_prov:lowpass_filter"),
    ("seis_prov:filter_type", "Butterworth"),
    ("seis_prov:corner_frequency", prov.model.Literal(
        5.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:filter_order", prov.model.Literal(
        2,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:number_of_passes", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_lp_8a5ac74">
    <prov:label>Lowpass Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:lowpass_filter</prov:type>
    <seis_prov:corner_frequency xsi:type="xsd:double">5.0</seis_prov:corner_frequency>
    <seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
    <seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_lp_8a5ac74": {
            "prov:label": "Lowpass Filter",
            "prov:type": "seis_prov:lowpass_filter",
            "seis_prov:corner_frequency": {
                "$": 5.0,
                "type": "xsd:double"
            },
            "seis_prov:filter_order": {
                "$": "2",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:filter_type": "Butterworth",
            "seis_prov:number_of_passes": {
                "$": "1",
                "type": "xsd:positiveInteger"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_lp_a0a7b38, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:lowpass_filter", prov:label="Lowpass Filter"])
endDocument

Interpolate

Interpolate the data to new sampling points.

Properties
Name Value
prov:id interpolate
prov:label Interpolate
Two letter ID code: ip
Required Attributes
Name Type Description
interpolation_method xsd:string The method used to interpolate the samples. weighted average slopes is the interpolation method use by SAC and detailed in a 1976 paper by Wiggins. This is in wide use and thus offered as a special option here.
new_sampling_rate xsd:double The sampling rate after the interpolation.
Optional Attributes
Name Type Description
new_start_time xsd:dateTime The time of the first sample in UTC after the interpolation.
new_number_of_samples xsd:positiveInteger The number of samples after the interpolation.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "interpolate",
    "two_letter_code": "ip",
    "label": "Interpolate",
    "description": "Interpolate the data to new sampling points.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "interpolation_method",
            "types": ["xsd:string"],
            "description": "The method used to interpolate the samples. ``weighted average slopes`` is the interpolation method use by SAC and detailed in a 1976 paper by Wiggins. This is in wide use and thus offered as a special option here.",
            "required": true,
            "pattern": "weighted average slopes|linear spline|quadratic spline|cubic spline|linear|nearest",
            "example_value": "cubic spline"
        },
        {
            "name": "new_start_time",
            "types": ["xsd:dateTime"],
            "description": "The time of the first sample in UTC after the interpolation.",
            "required": false,
            "example_value": "2012-04-23T18:25:43.511Z"
        },
        {
            "name": "new_number_of_samples",
            "types": ["xsd:positiveInteger"],
            "description": "The number of samples after the interpolation.",
            "required": false,
            "example_value": 5000
        },
        {
            "name": "new_sampling_rate",
            "types": ["xsd:double"],
            "description": "The sampling rate after the interpolation.",
            "required": true,
            "example_value": 10.0
        }
    ]
}

Minimal Example

A concrete interpolate node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid interpolate node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,274,134"];
	n1 [label=<Interpolate<br /><font color="#333333" point-size="10">seis_prov:sp001_ip_8230ff2</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ip_8230ff2", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="137,115", width="2.0556", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Interpolate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:interpolate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#interpolation_method">seis_prov:interpolation_method</TD>
        <TD align="left">cubic spline</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_sampling_rate">seis_prov:new_sampling_rate</TD>
        <TD align="left">10.0</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="137,30", width="3.8056", height="0.81944"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="137,59.729 137,71.889 137,85.587 137,96.304"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ip_8230ff2", other_attributes=((
    ("prov:label", "Interpolate"),
    ("prov:type", "seis_prov:interpolate"),
    ("seis_prov:interpolation_method", "cubic spline"),
    ("seis_prov:new_sampling_rate", prov.model.Literal(
        10.0,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ip_8230ff2">
    <prov:label>Interpolate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:interpolate</prov:type>
    <seis_prov:interpolation_method>cubic spline</seis_prov:interpolation_method>
    <seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ip_8230ff2": {
            "prov:label": "Interpolate",
            "prov:type": "seis_prov:interpolate",
            "seis_prov:interpolation_method": "cubic spline",
            "seis_prov:new_sampling_rate": {
                "$": 10.0,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ip_8230ff2, -, -, [seis_prov:interpolation_method="cubic spline", seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:interpolate", prov:label="Interpolate"])
endDocument

Full Example

A concrete interpolate node example is illustrated here as a graph, in code, and in various representations. This is a full interpolate node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,370,158"];
	n1 [label=<Interpolate<br /><font color="#333333" point-size="10">seis_prov:sp001_ip_450ad8a</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ip_450ad8a", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="185,139", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Interpolate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:interpolate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#interpolation_method">seis_prov:interpolation_method</TD>
        <TD align="left">cubic spline</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_number_of_samples">seis_prov:new_number_of_samples</TD>
        <TD align="left">"5000" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_sampling_rate">seis_prov:new_sampling_rate</TD>
        <TD align="left">10.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_start_time">seis_prov:new_start_time</TD>
        <TD align="left">2012-04-23T18:25:43.511000+00:00</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="185,42", width="5.1389", height="1.1528"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="185,83.7 185,96.537 185,110.02 185,120.46"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ip_450ad8a", other_attributes=((
    ("prov:label", "Interpolate"),
    ("prov:type", "seis_prov:interpolate"),
    ("seis_prov:interpolation_method", "cubic spline"),
    ("seis_prov:new_start_time", prov.model.Literal(
        '2012-04-23T18:25:43.511Z',
        prov.constants.XSD_DATETIME)),
    ("seis_prov:new_number_of_samples", prov.model.Literal(
        5000,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:new_sampling_rate", prov.model.Literal(
        10.0,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ip_450ad8a">
    <prov:label>Interpolate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:interpolate</prov:type>
    <seis_prov:interpolation_method>cubic spline</seis_prov:interpolation_method>
    <seis_prov:new_number_of_samples xsi:type="xsd:positiveInteger">5000</seis_prov:new_number_of_samples>
    <seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
    <seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ip_450ad8a": {
            "prov:label": "Interpolate",
            "prov:type": "seis_prov:interpolate",
            "seis_prov:interpolation_method": "cubic spline",
            "seis_prov:new_number_of_samples": {
                "$": "5000",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:new_sampling_rate": {
                "$": 10.0,
                "type": "xsd:double"
            },
            "seis_prov:new_start_time": {
                "$": "2012-04-23T18:25:43.511000+00:00",
                "type": "xsd:dateTime"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ip_8230ff2, -, -, [seis_prov:interpolation_method="cubic spline", seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:interpolate", prov:label="Interpolate"])
endDocument

Integrate

Integrate the data with respect to time.

Properties
Name Value
prov:id integrate
prov:label Integrate
Two letter ID code: ig
Required Attributes
Name Type Description
order xsd:positiveInteger The order of the integration, e.g. the nth anti-derivative.
Optional Attributes
Name Type Description
integration_method xsd:string The integration method.
input_units xsd:string Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
output_units xsd:string Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "integrate",
    "two_letter_code": "ig",
    "label": "Integrate",
    "description": "Integrate the data with respect to time.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "order",
            "types": ["xsd:positiveInteger"],
            "description": "The order of the integration, e.g. the nth anti-derivative.",
            "required": true,
            "example_value": 1
        },
        {
            "name": "integration_method",
            "types": ["xsd:string"],
            "description": "The integration method.",
            "required": false,
            "example_value": "Composite trapezoidal rule."
        },
        {
            "name": "input_units",
            "types": ["xsd:string"],
            "description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m/s"
        },
        {
            "name": "output_units",
            "types": ["xsd:string"],
            "description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m"
        }
    ]
}

Minimal Example

A concrete integrate node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid integrate node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,224,122"];
	n1 [label=<Integrate<br /><font color="#333333" point-size="10">seis_prov:sp001_ig_a43b174</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ig_a43b174", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="112,103", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Integrate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:integrate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#order">seis_prov:order</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="112,24", width="3.1111", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="112,47.703 112,59.428 112,73.378 112,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ig_a43b174", other_attributes=((
    ("prov:label", "Integrate"),
    ("prov:type", "seis_prov:integrate"),
    ("seis_prov:order", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ig_a43b174">
    <prov:label>Integrate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:integrate</prov:type>
    <seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ig_a43b174": {
            "prov:label": "Integrate",
            "prov:type": "seis_prov:integrate",
            "seis_prov:order": {
                "$": "1",
                "type": "xsd:positiveInteger"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ig_a43b174, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:integrate", prov:label="Integrate"])
endDocument

Full Example

A concrete integrate node example is illustrated here as a graph, in code, and in various representations. This is a full integrate node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,298,158"];
	n1 [label=<Integrate<br /><font color="#333333" point-size="10">seis_prov:sp001_ig_ee9c7fe</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ig_ee9c7fe", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="149,139", width="2.0833", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Integrate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:integrate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#input_units">seis_prov:input_units</TD>
        <TD align="left">m/s</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#integration_method">seis_prov:integration_method</TD>
        <TD align="left">Composite trapezoidal rule.</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#order">seis_prov:order</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#output_units">seis_prov:output_units</TD>
        <TD align="left">m</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="149,42", width="4.1389", height="1.1528"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="149,83.7 149,96.537 149,110.02 149,120.46"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ig_ee9c7fe", other_attributes=((
    ("prov:label", "Integrate"),
    ("prov:type", "seis_prov:integrate"),
    ("seis_prov:order", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:integration_method", "Composite trapezoidal rule."),
    ("seis_prov:input_units", "m/s"),
    ("seis_prov:output_units", "m")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ig_ee9c7fe">
    <prov:label>Integrate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:integrate</prov:type>
    <seis_prov:input_units>m/s</seis_prov:input_units>
    <seis_prov:integration_method>Composite trapezoidal rule.</seis_prov:integration_method>
    <seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
    <seis_prov:output_units>m</seis_prov:output_units>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ig_ee9c7fe": {
            "prov:label": "Integrate",
            "prov:type": "seis_prov:integrate",
            "seis_prov:input_units": "m/s",
            "seis_prov:integration_method": "Composite trapezoidal rule.",
            "seis_prov:order": {
                "$": "1",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:output_units": "m"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ig_a43b174, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:integrate", prov:label="Integrate"])
endDocument

Highpass Filter

Highpass the data.

Properties
Name Value
prov:id highpass_filter
prov:label Highpass Filter
Two letter ID code: hp
Required Attributes
Name Type Description
filter_type xsd:string The type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ...
Optional Attributes
Name Type Description
corner_frequency xsd:double The corner frequency of the filter if applicable in Hz
filter_order xsd:positiveInteger The order of the filter if applicable.
number_of_passes xsd:positiveInteger The number of filter passes if applicable.
chebychev_transition_bw xsd:double The transition band width in the case of a Chebychev filter.
chebychev_attenuation_factor xsd:double The attenuation factor in the case of a Chebychev filter.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "highpass_filter",
    "two_letter_code": "hp",
    "label": "Highpass Filter",
    "description": "Highpass the data.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "filter_type",
            "types": ["xsd:string"],
            "description": "The type of filter, e.g. `Butterworth`, `FIR`, `Chebyshev Type I/II`, `Bessel`, ...",
            "required": true,
            "example_value": "Butterworth"
        },
        {
            "name": "corner_frequency",
            "types": ["xsd:double"],
            "description": "The corner frequency of the filter if applicable in Hz",
            "required": false,
            "example_value": 5.0
        },
        {
            "name": "filter_order",
            "types": ["xsd:positiveInteger"],
            "description": "The order of the filter if applicable.",
            "required": false,
            "example_value": 2
        },
        {
            "name": "number_of_passes",
            "types": ["xsd:positiveInteger"],
            "description": "The number of filter passes if applicable.",
            "required": false,
            "example_value": 1
        },
        {
            "name": "chebychev_transition_bw",
            "types": ["xsd:double"],
            "required": false,
            "description": "The transition band width in the case of a Chebychev filter.",
            "example_value": 10.0,
            "skip_example_in_doc": true
        },
        {
            "name": "chebychev_attenuation_factor",
            "types": ["xsd:double"],
            "required": false,
            "description": "The attenuation factor in the case of a Chebychev filter.",
            "example_value": 20.0,
            "skip_example_in_doc": true
        }
    ]
}

Minimal Example

A concrete highpass_filter node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid highpass_filter node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,234,122"];
	n1 [label=<Highpass Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_hp_a4d5654</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_hp_a4d5654", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="117,103", width="2.1944", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Highpass Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:highpass_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="117,24", width="3.25", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="117,47.703 117,59.428 117,73.378 117,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_hp_a4d5654", other_attributes=((
    ("prov:label", "Highpass Filter"),
    ("prov:type", "seis_prov:highpass_filter"),
    ("seis_prov:filter_type", "Butterworth")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_hp_a4d5654">
    <prov:label>Highpass Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:highpass_filter</prov:type>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_hp_a4d5654": {
            "prov:label": "Highpass Filter",
            "prov:type": "seis_prov:highpass_filter",
            "seis_prov:filter_type": "Butterworth"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_hp_a4d5654, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:highpass_filter", prov:label="Highpass Filter"])
endDocument

Full Example

A concrete highpass_filter node example is illustrated here as a graph, in code, and in various representations. This is a full highpass_filter node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,290,158"];
	n1 [label=<Highpass Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_hp_6deb47f</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_hp_6deb47f", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="145,139", width="2.1667", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Highpass Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:highpass_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#corner_frequency">seis_prov:corner_frequency</TD>
        <TD align="left">5.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_order">seis_prov:filter_order</TD>
        <TD align="left">"2" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#number_of_passes">seis_prov:number_of_passes</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="145,42", width="4.0278", height="1.1528"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="145,83.7 145,96.537 145,110.02 145,120.46"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_hp_6deb47f", other_attributes=((
    ("prov:label", "Highpass Filter"),
    ("prov:type", "seis_prov:highpass_filter"),
    ("seis_prov:filter_type", "Butterworth"),
    ("seis_prov:corner_frequency", prov.model.Literal(
        5.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:filter_order", prov.model.Literal(
        2,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:number_of_passes", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_hp_6deb47f">
    <prov:label>Highpass Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:highpass_filter</prov:type>
    <seis_prov:corner_frequency xsi:type="xsd:double">5.0</seis_prov:corner_frequency>
    <seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
    <seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_hp_6deb47f": {
            "prov:label": "Highpass Filter",
            "prov:type": "seis_prov:highpass_filter",
            "seis_prov:corner_frequency": {
                "$": 5.0,
                "type": "xsd:double"
            },
            "seis_prov:filter_order": {
                "$": "2",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:filter_type": "Butterworth",
            "seis_prov:number_of_passes": {
                "$": "1",
                "type": "xsd:positiveInteger"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_hp_a4d5654, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:highpass_filter", prov:label="Highpass Filter"])
endDocument

Divide

Divide each value of the data by a certain factor. This is implied by many operations but sometimes useful to capture in its own right.

Properties
Name Value
prov:id divide
prov:label Divide
Two letter ID code: dv
Required Attributes
Name Type Description
divisor xsd:double The factor by which to divide.
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "divide",
    "two_letter_code": "dv",
    "label": "Divide",
    "description": "Divide each value of the data by a certain factor. This is implied by many operations but sometimes useful to capture in its own right.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "divisor",
            "types": ["xsd:double"],
            "description": "The factor by which to divide.",
            "required": true,
            "example_value": 2.5
        }
    ]
}

Example

A concrete divide node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,178,122"];
	n1 [label=<Divide<br /><font color="#333333" point-size="10">seis_prov:sp001_dv_4ba41f7</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_dv_4ba41f7", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="89,103", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Divide</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:divide</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#divisor">seis_prov:divisor</TD>
        <TD align="left">2.5</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="89,24", width="2.4722", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="89,47.703 89,59.428 89,73.378 89,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_dv_4ba41f7", other_attributes=((
    ("prov:label", "Divide"),
    ("prov:type", "seis_prov:divide"),
    ("seis_prov:divisor", prov.model.Literal(
        2.5,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_dv_4ba41f7">
    <prov:label>Divide</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:divide</prov:type>
    <seis_prov:divisor xsi:type="xsd:double">2.5</seis_prov:divisor>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_dv_4ba41f7": {
            "prov:label": "Divide",
            "prov:type": "seis_prov:divide",
            "seis_prov:divisor": {
                "$": 2.5,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_dv_17e6a00, -, -, [prov:type="seis_prov:divide", prov:label="Divide", seis_prov:divisor="2.5" %% xsd:float])
endDocument

Differentiate

Differentiate the data with respect to time.

Properties
Name Value
prov:id differentiate
prov:label Differentiate
Two letter ID code: df
Required Attributes
Name Type Description
order xsd:positiveInteger The order of the derivative, e.g. the nth derivative.
Optional Attributes
Name Type Description
differentiation_method xsd:string The differentiation method.
input_units xsd:string Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
output_units xsd:string Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "differentiate",
    "two_letter_code": "df",
    "label": "Differentiate",
    "description": "Differentiate the data with respect to time.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "order",
            "types": ["xsd:positiveInteger"],
            "description": "The order of the derivative, e.g. the nth derivative.",
            "required": true,
            "example_value": 1
        },
        {
            "name": "differentiation_method",
            "types": ["xsd:string"],
            "description": "The differentiation method.",
            "required": false,
            "example_value": "three point centered differences"
        },
        {
            "name": "input_units",
            "types": ["xsd:string"],
            "description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m"
        },
        {
            "name": "output_units",
            "types": ["xsd:string"],
            "description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
            "required": false,
            "example_value": "m/s"
        }
    ]
}

Minimal Example

A concrete differentiate node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid differentiate node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,224,122"];
	n1 [label=<Differentiate<br /><font color="#333333" point-size="10">seis_prov:sp001_df_038d237</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_df_038d237", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="112,103", width="2.1667", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Differentiate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:differentiate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#order">seis_prov:order</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="112,24", width="3.1111", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="112,47.703 112,59.428 112,73.378 112,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_df_038d237", other_attributes=((
    ("prov:label", "Differentiate"),
    ("prov:type", "seis_prov:differentiate"),
    ("seis_prov:order", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_df_038d237">
    <prov:label>Differentiate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:differentiate</prov:type>
    <seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_df_038d237": {
            "prov:label": "Differentiate",
            "prov:type": "seis_prov:differentiate",
            "seis_prov:order": {
                "$": "1",
                "type": "xsd:positiveInteger"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_df_038d237, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:differentiate", prov:label="Differentiate"])
endDocument

Full Example

A concrete differentiate node example is illustrated here as a graph, in code, and in various representations. This is a full differentiate node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,334,158"];
	n1 [label=<Differentiate<br /><font color="#333333" point-size="10">seis_prov:sp001_df_681128b</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_df_681128b", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="167,139", width="2.1667", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Differentiate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:differentiate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#differentiation_method">seis_prov:differentiation_method</TD>
        <TD align="left">three point centered differences</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#input_units">seis_prov:input_units</TD>
        <TD align="left">m</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#order">seis_prov:order</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#output_units">seis_prov:output_units</TD>
        <TD align="left">m/s</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="167,42", width="4.6389", height="1.1528"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="167,83.7 167,96.537 167,110.02 167,120.46"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_df_681128b", other_attributes=((
    ("prov:label", "Differentiate"),
    ("prov:type", "seis_prov:differentiate"),
    ("seis_prov:order", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:differentiation_method", "three point centered differences"),
    ("seis_prov:input_units", "m"),
    ("seis_prov:output_units", "m/s")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_df_681128b">
    <prov:label>Differentiate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:differentiate</prov:type>
    <seis_prov:differentiation_method>three point centered differences</seis_prov:differentiation_method>
    <seis_prov:input_units>m</seis_prov:input_units>
    <seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
    <seis_prov:output_units>m/s</seis_prov:output_units>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_df_681128b": {
            "prov:label": "Differentiate",
            "prov:type": "seis_prov:differentiate",
            "seis_prov:differentiation_method": "three point centered differences",
            "seis_prov:input_units": "m",
            "seis_prov:order": {
                "$": "1",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:output_units": "m/s"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_df_038d237, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:differentiate", prov:label="Differentiate"])
endDocument

Detrend

Remove trend from the data.

Properties
Name Value
prov:id detrend
prov:label Detrend
Two letter ID code: dt
Required Attributes
Name Type Description
detrending_method xsd:string The method used to remove the trend from the data. detrend means substracting the best fitting linear line, demean removes the mean, and simple subtracts a line through the first and last point.
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "detrend",
    "two_letter_code": "dt",
    "label": "Detrend",
    "description": "Remove trend from the data.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "detrending_method",
            "types": ["xsd:string"],
            "pattern": "linear fit|demean|simple",
            "description": "The method used to remove the trend from the data. ``detrend`` means substracting the best fitting linear line, ``demean`` removes the mean, and ``simple`` subtracts a line through the first and last point.",
            "required": true,
            "example_value": "demean"
        }
    ]
}

Example

A concrete detrend node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,250,122"];
	n1 [label=<Detrend<br /><font color="#333333" point-size="10">seis_prov:sp001_dt_4e3a746</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_dt_4e3a746", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="125,103", width="2.1667", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Detrend</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:detrend</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#detrending_method">seis_prov:detrending_method</TD>
        <TD align="left">demean</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="125,24", width="3.4722", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="125,47.703 125,59.428 125,73.378 125,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_dt_4e3a746", other_attributes=((
    ("prov:label", "Detrend"),
    ("prov:type", "seis_prov:detrend"),
    ("seis_prov:detrending_method", "demean")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_dt_4e3a746">
    <prov:label>Detrend</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:detrend</prov:type>
    <seis_prov:detrending_method>demean</seis_prov:detrending_method>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_dt_4e3a746": {
            "prov:label": "Detrend",
            "prov:type": "seis_prov:detrend",
            "seis_prov:detrending_method": "demean"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_dt_af30527, -, -, [seis_prov:detrending_method="demean", prov:type="seis_prov:detrend", prov:label="Detrend"])
endDocument

Decimate

Downsample the waveform data by an integer factor. Any applied anti-alias filtering has to be described by a filtering activity.

Properties
Name Value
prov:id decimate
prov:label Decimate
Two letter ID code: dc
Required Attributes
Name Type Description
factor xsd:positiveInteger The decimation factor
Optional Attributes
None

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "decimate",
    "two_letter_code": "dc",
    "label": "Decimate",
    "description": "Downsample the waveform data by an integer factor. Any applied anti-alias filtering has to be described by a filtering activity.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "factor",
            "types": ["xsd:positiveInteger"],
            "description": "The decimation factor",
            "required": true,
            "example_value": 5
        }
    ]
}

Example

A concrete decimate node example is illustrated here as a graph, in code, and in various representations.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,226,122"];
	n1 [label=<Decimate<br /><font color="#333333" point-size="10">seis_prov:sp001_dc_f9fbf35</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_dc_f9fbf35", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="113,103", width="2.0556", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Decimate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:decimate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#factor">seis_prov:factor</TD>
        <TD align="left">"5" %% xsd:positiveInteger</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="113,24", width="3.1389", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="113,47.703 113,59.428 113,73.378 113,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_dc_f9fbf35", other_attributes=((
    ("prov:label", "Decimate"),
    ("prov:type", "seis_prov:decimate"),
    ("seis_prov:factor", prov.model.Literal(
        5,
        prov.constants.XSD_POSITIVEINTEGER))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_dc_f9fbf35">
    <prov:label>Decimate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:decimate</prov:type>
    <seis_prov:factor xsi:type="xsd:positiveInteger">5</seis_prov:factor>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_dc_f9fbf35": {
            "prov:label": "Decimate",
            "prov:type": "seis_prov:decimate",
            "seis_prov:factor": {
                "$": "5",
                "type": "xsd:positiveInteger"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_dc_354e9d6, -, -, [prov:type="seis_prov:decimate", prov:label="Decimate", seis_prov:factor="5" %% xsd:positiveInteger])
endDocument

Cut

Cut the data resulting in a shorter trace.

Properties
Name Value
prov:id cut
prov:label Cut
Two letter ID code: ct
Required Attributes
None
Optional Attributes
Name Type Description
new_start_time xsd:dateTime The time of the first sample in UTC after cutting it.
new_end_time xsd:dateTime The time of the last sample in UTC after cutting it.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "cut",
    "two_letter_code": "ct",
    "label": "Cut",
    "description": "Cut the data resulting in a shorter trace.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "new_start_time",
            "types": ["xsd:dateTime"],
            "description": "The time of the first sample in UTC after cutting it.",
            "required": false,
            "example_value": "2012-04-23T18:25:43.511Z"
        },
        {
            "name": "new_end_time",
            "types": ["xsd:dateTime"],
            "description": "The time of the last sample in UTC after cutting it.",
            "required": false,
            "example_value": "2012-04-23T20:25:43.511Z"
        }
    ]
}

Minimal Example

A concrete cut node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cut node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,154,110"];
	n1 [label=<Cut<br /><font color="#333333" point-size="10">seis_prov:sp001_ct_e73ced0</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ct_e73ced0", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="77,91", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cut</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cut</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="77,18", width="1.8333", height="0.5"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="77,36.045 77,47.107 77,61.238 77,72.4"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ct_e73ced0", other_attributes=((
    ("prov:label", "Cut"),
    ("prov:type", "seis_prov:cut"),

)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ct_e73ced0">
    <prov:label>Cut</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cut</prov:type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ct_e73ced0": {
            "prov:label": "Cut",
            "prov:type": "seis_prov:cut"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ct_e73ced0, -, -, [prov:type="seis_prov:cut", prov:label="Cut"])
endDocument

Full Example

A concrete cut node example is illustrated here as a graph, in code, and in various representations. This is a full cut node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,322,134"];
	n1 [label=<Cut<br /><font color="#333333" point-size="10">seis_prov:sp001_ct_aae73f2</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ct_aae73f2", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="161,115", width="2.1111", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cut</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cut</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_end_time">seis_prov:new_end_time</TD>
        <TD align="left">2012-04-23T20:25:43.511000+00:00</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#new_start_time">seis_prov:new_start_time</TD>
        <TD align="left">2012-04-23T18:25:43.511000+00:00</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="161,30", width="4.4722", height="0.81944"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="161,59.729 161,71.889 161,85.587 161,96.304"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ct_aae73f2", other_attributes=((
    ("prov:label", "Cut"),
    ("prov:type", "seis_prov:cut"),
    ("seis_prov:new_start_time", prov.model.Literal(
        '2012-04-23T18:25:43.511Z',
        prov.constants.XSD_DATETIME)),
    ("seis_prov:new_end_time", prov.model.Literal(
        '2012-04-23T20:25:43.511Z',
        prov.constants.XSD_DATETIME))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ct_aae73f2">
    <prov:label>Cut</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cut</prov:type>
    <seis_prov:new_end_time xsi:type="xsd:dateTime">2012-04-23T20:25:43.511000+00:00</seis_prov:new_end_time>
    <seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ct_aae73f2": {
            "prov:label": "Cut",
            "prov:type": "seis_prov:cut",
            "seis_prov:new_end_time": {
                "$": "2012-04-23T20:25:43.511000+00:00",
                "type": "xsd:dateTime"
            },
            "seis_prov:new_start_time": {
                "$": "2012-04-23T18:25:43.511000+00:00",
                "type": "xsd:dateTime"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ct_e73ced0, -, -, [prov:type="seis_prov:cut", prov:label="Cut"])
endDocument

Cross Correlate

Cross correlate data of two stations. This does not contain information about the used data as that is captured by the incoming entities.

Properties
Name Value
prov:id cross_correlate
prov:label Cross Correlate
Two letter ID code: co
Required Attributes
Name Type Description
correlation_type xsd:string The type of performed cross correlation as a string.
Optional Attributes
Name Type Description
max_lag_time_in_sec xsd:double The type of performed cross correlation as a string.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "cross_correlate",
    "two_letter_code": "co",
    "label": "Cross Correlate",
    "description": "Cross correlate data of two stations. This does not contain information about the used data as that is captured by the incoming entities.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "correlation_type",
            "types": ["xsd:string"],
            "description": "The type of performed cross correlation as a string.",
            "required": true,
            "example_value": "Phase Cross Correlation"
        },
        {
            "name": "max_lag_time_in_sec",
            "types": ["xsd:double"],
            "description": "The type of performed cross correlation as a string.",
            "required": false,
            "example_value": 60.0
        }
    ]
}

Minimal Example

A concrete cross_correlate node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cross_correlate node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,268,122"];
	n1 [label=<Cross Correlate<br /><font color="#333333" point-size="10">seis_prov:sp001_co_2856503</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_co_2856503", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="134,103", width="2.1944", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cross Correlate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cross_correlate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#correlation_type">seis_prov:correlation_type</TD>
        <TD align="left">Phase Cross Correlation</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="134,24", width="3.7222", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="134,47.703 134,59.428 134,73.378 134,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_co_2856503", other_attributes=((
    ("prov:label", "Cross Correlate"),
    ("prov:type", "seis_prov:cross_correlate"),
    ("seis_prov:correlation_type", "Phase Cross Correlation")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_co_2856503">
    <prov:label>Cross Correlate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cross_correlate</prov:type>
    <seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_co_2856503": {
            "prov:label": "Cross Correlate",
            "prov:type": "seis_prov:cross_correlate",
            "seis_prov:correlation_type": "Phase Cross Correlation"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_co_2856503, -, -, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlate", prov:label="Cross Correlate"])
endDocument

Full Example

A concrete cross_correlate node example is illustrated here as a graph, in code, and in various representations. This is a full cross_correlate node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,294,134"];
	n1 [label=<Cross Correlate<br /><font color="#333333" point-size="10">seis_prov:sp001_co_2d9f242</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_co_2d9f242", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="147,115", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Cross Correlate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:cross_correlate</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#correlation_type">seis_prov:correlation_type</TD>
        <TD align="left">Phase Cross Correlation</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#max_lag_time_in_sec">seis_prov:max_lag_time_in_sec</TD>
        <TD align="left">60.0</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="147,30", width="4.0833", height="0.81944"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="147,59.729 147,71.889 147,85.587 147,96.304"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_co_2d9f242", other_attributes=((
    ("prov:label", "Cross Correlate"),
    ("prov:type", "seis_prov:cross_correlate"),
    ("seis_prov:correlation_type", "Phase Cross Correlation"),
    ("seis_prov:max_lag_time_in_sec", prov.model.Literal(
        60.0,
        prov.constants.XSD_DOUBLE))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_co_2d9f242">
    <prov:label>Cross Correlate</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:cross_correlate</prov:type>
    <seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
    <seis_prov:max_lag_time_in_sec xsi:type="xsd:double">60.0</seis_prov:max_lag_time_in_sec>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_co_2d9f242": {
            "prov:label": "Cross Correlate",
            "prov:type": "seis_prov:cross_correlate",
            "seis_prov:correlation_type": "Phase Cross Correlation",
            "seis_prov:max_lag_time_in_sec": {
                "$": 60.0,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_co_2856503, -, -, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlate", prov:label="Cross Correlate"])
endDocument

Calculate Adjoint Source

Calculate an adjoint source.

Properties
Name Value
prov:id calculate_adjoint_source
prov:label Calculate Adjoint Source
Two letter ID code: ca
Required Attributes
Name Type Description
adjoint_source_type xsd:string A string denoting the type of adjoint source.
Optional Attributes
Name Type Description
adjoint_source_type_uri xsd:anyURI A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "calculate_adjoint_source",
    "two_letter_code": "ca",
    "label": "Calculate Adjoint Source",
    "description": "Calculate an adjoint source.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
       {
         "name": "adjoint_source_type",
         "types": ["xsd:string"],
         "description": "A string denoting the type of adjoint source.",
         "required": true,
         "example_value": "Time Frequency Phase"
       },
       {
         "name": "adjoint_source_type_uri",
         "types": ["xsd:anyURI"],
         "description": "A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication.",
         "required": false,
         "example_value": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x"
       }
    ]
}

Minimal Example

A concrete calculate_adjoint_source node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid calculate_adjoint_source node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,332,122"];
	n1 [label=<Calculate Adjoint Source<br /><font color="#333333" point-size="10">seis_prov:sp001_ca_c7540fc</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ca_c7540fc", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="166,103", width="2.5833", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Calculate Adjoint Source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:calculate_adjoint_source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#adjoint_source_type">seis_prov:adjoint_source_type</TD>
        <TD align="left">Time Frequency Phase</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="166,24", width="4.6111", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="166,47.703 166,59.428 166,73.378 166,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ca_c7540fc", other_attributes=((
    ("prov:label", "Calculate Adjoint Source"),
    ("prov:type", "seis_prov:calculate_adjoint_source"),
    ("seis_prov:adjoint_source_type", "Time Frequency Phase")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ca_c7540fc">
    <prov:label>Calculate Adjoint Source</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:calculate_adjoint_source</prov:type>
    <seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ca_c7540fc": {
            "prov:label": "Calculate Adjoint Source",
            "prov:type": "seis_prov:calculate_adjoint_source",
            "seis_prov:adjoint_source_type": "Time Frequency Phase"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ca_c7540fc, -, -, [prov:type="seis_prov:calculate_adjoint_source", prov:label="Calculate Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument

Full Example

A concrete calculate_adjoint_source node example is illustrated here as a graph, in code, and in various representations. This is a full calculate_adjoint_source node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,430,134"];
	n1 [label=<Calculate Adjoint Source<br /><font color="#333333" point-size="10">seis_prov:sp001_ca_e1532cc</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_ca_e1532cc", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="215,115", width="2.5833", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Calculate Adjoint Source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:calculate_adjoint_source</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#adjoint_source_type">seis_prov:adjoint_source_type</TD>
        <TD align="left">Time Frequency Phase</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#adjoint_source_type_uri">seis_prov:adjoint_source_type_uri</TD>
        <TD align="left" href="http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x">http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="215,30", width="5.9722", height="0.81944"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="215,59.729 215,71.889 215,85.587 215,96.304"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_ca_e1532cc", other_attributes=((
    ("prov:label", "Calculate Adjoint Source"),
    ("prov:type", "seis_prov:calculate_adjoint_source"),
    ("seis_prov:adjoint_source_type", "Time Frequency Phase"),
    ("seis_prov:adjoint_source_type_uri", prov.model.Literal(
        'http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x',
        prov.constants.XSD_ANYURI))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_ca_e1532cc">
    <prov:label>Calculate Adjoint Source</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:calculate_adjoint_source</prov:type>
    <seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
    <seis_prov:adjoint_source_type_uri xsi:type="xsd:anyURI">http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x</seis_prov:adjoint_source_type_uri>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_ca_e1532cc": {
            "prov:label": "Calculate Adjoint Source",
            "prov:type": "seis_prov:calculate_adjoint_source",
            "seis_prov:adjoint_source_type": "Time Frequency Phase",
            "seis_prov:adjoint_source_type_uri": {
                "$": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x",
                "type": "xsd:anyURI"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_ca_c7540fc, -, -, [prov:type="seis_prov:calculate_adjoint_source", prov:label="Calculate Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument

Bandstop Filter

Bandstop the data.

Properties
Name Value
prov:id bandstop_filter
prov:label Bandstop Filter
Two letter ID code: bs
Required Attributes
Name Type Description
filter_type xsd:string The type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ...
Optional Attributes
Name Type Description
lower_corner_frequency xsd:double The lower corner frequency of the filter if applicable in Hz
uppoer_corner_frequency xsd:double The upper corner frequency of the filter if applicable in Hz
filter_order xsd:positiveInteger The order of the filter if applicable.
number_of_passes xsd:positiveInteger The number of filter passes if applicable.
chebychev_transition_bw xsd:double The transition band width in the case of a Chebychev filter.
chebychev_attenuation_factor xsd:double The attenuation factor in the case of a Chebychev filter.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "bandstop_filter",
    "two_letter_code": "bs",
    "label": "Bandstop Filter",
    "description": "Bandstop the data.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "filter_type",
            "types": ["xsd:string"],
            "description": "The type of filter, e.g. `Butterworth`, `FIR`, `Chebyshev Type I/II`, `Bessel`, ...",
            "required": true,
            "example_value": "Butterworth"
        },
        {
            "name": "lower_corner_frequency",
            "types": ["xsd:double"],
            "description": "The lower corner frequency of the filter if applicable in Hz",
            "required": false,
            "example_value": 5.0
        },
        {
            "name": "uppoer_corner_frequency",
            "types": ["xsd:double"],
            "description": "The upper corner frequency of the filter if applicable in Hz",
            "required": false,
            "example_value": 15.0
        },
        {
            "name": "filter_order",
            "types": ["xsd:positiveInteger"],
            "description": "The order of the filter if applicable.",
            "required": false,
            "example_value": 2
        },
        {
            "name": "number_of_passes",
            "types": ["xsd:positiveInteger"],
            "description": "The number of filter passes if applicable.",
            "required": false,
            "example_value": 1
        },
        {
            "name": "chebychev_transition_bw",
            "types": ["xsd:double"],
            "required": false,
            "description": "The transition band width in the case of a Chebychev filter.",
            "example_value": 10.0,
            "skip_example_in_doc": true
        },
        {
            "name": "chebychev_attenuation_factor",
            "types": ["xsd:double"],
            "required": false,
            "description": "The attenuation factor in the case of a Chebychev filter.",
            "example_value": 20.0,
            "skip_example_in_doc": true
        }
    ]
}

Minimal Example

A concrete bandstop_filter node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid bandstop_filter node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,236,122"];
	n1 [label=<Bandstop Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_bs_68753fc</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_bs_68753fc", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="118,103", width="2.1389", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Bandstop Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:bandstop_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="118,24", width="3.2778", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="118,47.703 118,59.428 118,73.378 118,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_bs_68753fc", other_attributes=((
    ("prov:label", "Bandstop Filter"),
    ("prov:type", "seis_prov:bandstop_filter"),
    ("seis_prov:filter_type", "Butterworth")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_bs_68753fc">
    <prov:label>Bandstop Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:bandstop_filter</prov:type>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_bs_68753fc": {
            "prov:label": "Bandstop Filter",
            "prov:type": "seis_prov:bandstop_filter",
            "seis_prov:filter_type": "Butterworth"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_bs_68753fc, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandstop_filter", prov:label="Bandstop Filter"])
endDocument

Full Example

A concrete bandstop_filter node example is illustrated here as a graph, in code, and in various representations. This is a full bandstop_filter node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,320,170"];
	n1 [label=<Bandstop Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_bs_b004b51</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_bs_b004b51", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="160,151", width="2.1944", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Bandstop Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:bandstop_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_order">seis_prov:filter_order</TD>
        <TD align="left">"2" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#lower_corner_frequency">seis_prov:lower_corner_frequency</TD>
        <TD align="left">5.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#number_of_passes">seis_prov:number_of_passes</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#uppoer_corner_frequency">seis_prov:uppoer_corner_frequency</TD>
        <TD align="left">15.0</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="160,48", width="4.4444", height="1.3194"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="160,95.581 160,108.65 160,122.06 160,132.42"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_bs_b004b51", other_attributes=((
    ("prov:label", "Bandstop Filter"),
    ("prov:type", "seis_prov:bandstop_filter"),
    ("seis_prov:filter_type", "Butterworth"),
    ("seis_prov:lower_corner_frequency", prov.model.Literal(
        5.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:uppoer_corner_frequency", prov.model.Literal(
        15.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:filter_order", prov.model.Literal(
        2,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:number_of_passes", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER))
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_bs_b004b51">
    <prov:label>Bandstop Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:bandstop_filter</prov:type>
    <seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
    <seis_prov:lower_corner_frequency xsi:type="xsd:double">5.0</seis_prov:lower_corner_frequency>
    <seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
    <seis_prov:uppoer_corner_frequency xsi:type="xsd:double">15.0</seis_prov:uppoer_corner_frequency>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_bs_b004b51": {
            "prov:label": "Bandstop Filter",
            "prov:type": "seis_prov:bandstop_filter",
            "seis_prov:filter_order": {
                "$": "2",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:filter_type": "Butterworth",
            "seis_prov:lower_corner_frequency": {
                "$": 5.0,
                "type": "xsd:double"
            },
            "seis_prov:number_of_passes": {
                "$": "1",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:uppoer_corner_frequency": {
                "$": 15.0,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_bs_68753fc, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandstop_filter", prov:label="Bandstop Filter"])
endDocument

Bandpass Filter

A Bandpass filter. There is a huge variety of bandpass filters out there and this activity cannot capture them all in full detail.

Properties
Name Value
prov:id bandpass_filter
prov:label Bandpass Filter
Two letter ID code: bp
Required Attributes
Name Type Description
filter_type xsd:string The type of filter, one of Butterworth, FIR, IIR, Bessel, Cosine SAC Taper. Please give some more information with one or more of the other attributes. Cosine SAC Taper describes the frequency domain taper the SAC software package employs during instrument deconvolution.
Optional Attributes
Name Type Description
lower_corner_frequency xsd:double The lower corner frequency of the filter if applicable in Hz.
upper_corner_frequency xsd:double The upper corner frequency of the filter if applicable in Hz.
filter_order xsd:positiveInteger The order of the filter if applicable.
number_of_passes xsd:positiveInteger The number of filter passes if applicable.
sac_cosine_taper_frequency_limits xsd:string The frequency limits of the SAC frequency domain cosine taper in Hz from lowest to highest.

This shows the JSON that is used to generate the rest of the definition.

{
    "package": "seis_prov",
    "type": "activity",
    "name": "bandpass_filter",
    "two_letter_code": "bp",
    "label": "Bandpass Filter",
    "description": "A Bandpass filter. There is a huge variety of bandpass filters out there and this activity cannot capture them all in full detail.",
    "other_seis_prov_attributes_allowed": false,
    "attributes": [
        {
            "name": "filter_type",
            "types": ["xsd:string"],
            "description": "The type of filter, one of ``Butterworth``, ``FIR``, ``IIR``, ``Bessel``, ``Cosine SAC Taper``. Please give some more information with one or more of the other attributes. ``Cosine SAC Taper`` describes the frequency domain taper the SAC software package employs during instrument deconvolution.",
            "required": true,
            "pattern":"Butterworth|FIR|IIR|Bessel|Cosine SAC Taper",
            "example_value": "Butterworth"
        },
        {
            "name": "lower_corner_frequency",
            "types": ["xsd:double"],
            "description": "The lower corner frequency of the filter if applicable in Hz.",
            "required": false,
            "example_value": 5.0
        },
        {
            "name": "upper_corner_frequency",
            "types": ["xsd:double"],
            "description": "The upper corner frequency of the filter if applicable in Hz.",
            "required": false,
            "example_value": 15.0
        },
        {
            "name": "filter_order",
            "types": ["xsd:positiveInteger"],
            "description": "The order of the filter if applicable.",
            "required": false,
            "example_value": 2
        },
        {
            "name": "number_of_passes",
            "types": ["xsd:positiveInteger"],
            "description": "The number of filter passes if applicable.",
            "required": false,
            "example_value": 1
        },
        {
            "name": "sac_cosine_taper_frequency_limits",
            "types": ["xsd:string"],
            "description": "The frequency limits of the SAC frequency domain cosine taper in Hz from lowest to highest.",
            "required": false,
            "pattern": "^[+-]?(\\d*\\.)?\\d+,[+-]?(\\d*\\.)?\\d+,[+-]?(\\d*\\.)?\\d+,[+-]?(\\d*\\.)?\\d+$",
            "example_value": "0.02,0.1,1,5"
        }
    ]
}

Minimal Example

A concrete bandpass_filter node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid bandpass_filter node. See below for a full example.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,238,122"];
	n1 [label=<Bandpass Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_bp_1cb9e3d</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_bp_1cb9e3d", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="119,103", width="2.1944", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Bandpass Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:bandpass_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="119,24", width="3.3056", height="0.65278"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="119,47.703 119,59.428 119,73.378 119,84.333"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_bp_1cb9e3d", other_attributes=((
    ("prov:label", "Bandpass Filter"),
    ("prov:type", "seis_prov:bandpass_filter"),
    ("seis_prov:filter_type", "Butterworth")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_bp_1cb9e3d">
    <prov:label>Bandpass Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:bandpass_filter</prov:type>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_bp_1cb9e3d": {
            "prov:label": "Bandpass Filter",
            "prov:type": "seis_prov:bandpass_filter",
            "seis_prov:filter_type": "Butterworth"
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_bp_1cb9e3d, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandpass_filter", prov:label="Bandpass Filter"])
endDocument

Full Example

A concrete bandpass_filter node example is illustrated here as a graph, in code, and in various representations. This is a full bandpass_filter node containing the maximum amount of information.

digraph G {
	graph [charset="utf-8", rankdir=BT];
	node [label="\N"];
	graph [bb="0,0,364,182"];
	n1 [label=<Bandpass Filter<br /><font color="#333333" point-size="10">seis_prov:sp001_bp_9d37dd4</font>>, URL="http://seisprov.org/seis_prov/0.1/#sp001_bp_9d37dd4", color="#0000FF", fillcolor="#9FB1FC", shape=box, style=filled, pos="182,163", width="2.1944", height="0.51389"];
	ann1 [label=<<TABLE cellpadding="0" border="0">
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#label">prov:label</TD>
        <TD align="left">Bandpass Filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://www.w3.org/ns/prov#type">prov:type</TD>
        <TD align="left">seis_prov:bandpass_filter</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_order">seis_prov:filter_order</TD>
        <TD align="left">"2" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#filter_type">seis_prov:filter_type</TD>
        <TD align="left">Butterworth</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#lower_corner_frequency">seis_prov:lower_corner_frequency</TD>
        <TD align="left">5.0</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#number_of_passes">seis_prov:number_of_passes</TD>
        <TD align="left">"1" %% xsd:positiveInteger</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#sac_cosine_taper_frequency_limits">seis_prov:sac_cosine_taper_frequency_limits</TD>
        <TD align="left">0.02,0.1,1,5</TD>
    </TR>
    <TR>
        <TD align="left" href="http://seisprov.org/seis_prov/0.1/#upper_corner_frequency">seis_prov:upper_corner_frequency</TD>
        <TD align="left">15.0</TD>
    </TR>
    </TABLE>>, color=gray, shape=note, fontcolor=black, fontsize=10, pos="182,54", width="5.0556", height="1.4861"];
	ann1 -> n1 [arrowhead=none, color=gray, style=dashed, pos="182,107.54 182,120.79 182,134.11 182,144.37"];
}

Python code utilizing the prov package.

import prov
import prov.model

NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")

pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)


pr.activity("seis_prov:sp001_bp_9d37dd4", other_attributes=((
    ("prov:label", "Bandpass Filter"),
    ("prov:type", "seis_prov:bandpass_filter"),
    ("seis_prov:filter_type", "Butterworth"),
    ("seis_prov:lower_corner_frequency", prov.model.Literal(
        5.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:upper_corner_frequency", prov.model.Literal(
        15.0,
        prov.constants.XSD_DOUBLE)),
    ("seis_prov:filter_order", prov.model.Literal(
        2,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:number_of_passes", prov.model.Literal(
        1,
        prov.constants.XSD_POSITIVEINTEGER)),
    ("seis_prov:sac_cosine_taper_frequency_limits", "0.02,0.1,1,5")
)))

In the PROV-XML serialization.

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:activity prov:id="seis_prov:sp001_bp_9d37dd4">
    <prov:label>Bandpass Filter</prov:label>
    <prov:type xsi:type="xsd:string">seis_prov:bandpass_filter</prov:type>
    <seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
    <seis_prov:filter_type>Butterworth</seis_prov:filter_type>
    <seis_prov:lower_corner_frequency xsi:type="xsd:double">5.0</seis_prov:lower_corner_frequency>
    <seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
    <seis_prov:sac_cosine_taper_frequency_limits>0.02,0.1,1,5</seis_prov:sac_cosine_taper_frequency_limits>
    <seis_prov:upper_corner_frequency xsi:type="xsd:double">15.0</seis_prov:upper_corner_frequency>
  </prov:activity>
</prov:document>

In the PROV-JSON serialization.

{
    "activity": {
        "seis_prov:sp001_bp_9d37dd4": {
            "prov:label": "Bandpass Filter",
            "prov:type": "seis_prov:bandpass_filter",
            "seis_prov:filter_order": {
                "$": "2",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:filter_type": "Butterworth",
            "seis_prov:lower_corner_frequency": {
                "$": 5.0,
                "type": "xsd:double"
            },
            "seis_prov:number_of_passes": {
                "$": "1",
                "type": "xsd:positiveInteger"
            },
            "seis_prov:sac_cosine_taper_frequency_limits": "0.02,0.1,1,5",
            "seis_prov:upper_corner_frequency": {
                "$": 15.0,
                "type": "xsd:double"
            }
        }
    },
    "prefix": {
        "seis_prov": "http://seisprov.org/seis_prov/0.1/#"
    }
}

In PROV-N notation.

document
  prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
  
  activity(seis_prov:sp001_bp_1cb9e3d, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandpass_filter", prov:label="Bandpass Filter"])
endDocument