text:
# The GEDCOM X Conceptual Model

## Status

This document specifies a standard conceptual model for exchanging genealogical data,
and requests discussion and suggestions for improvements.

## Copyright Notice

Copyright 2011-2012 Intellectual Reserve, Inc.

## License

This document is distributed under a Creative Commons Attribution-ShareAlike license.
For details, see:

http://creativecommons.org/licenses/by-sa/3.0/

# 1. Introduction

The GEDCOM X conceptual model is a specification of formal concepts and types
that are used to provide a standard model and vocabulary for describing genealogical
data. Genealogical data is structured by data types such as persons,
relationships, and sources.

## 1.1 Identifier and Version

The identifier for this specification is:

`http://gedcomx.org/conceptual-model/v1`

For convenience, the GEDCOM X conceptual model may be referred to as "GEDCOM X 1.0".
This specification uses "GEDCOM X" internally.

## 1.2 Notational Conventions

This specification uses the term "data type" to refer to a formal description of
a data structure, including the properties that define valid instances of the
data type. For example, information about a person might be contained within a
data structure that supplies the person's name, birth date, and gender. A "data
type" defines the formal properties of the data structure.

When a property of a data type is specified as being of a particular data type, the
property inherits the corresponding requirements from that data type's definition.
When a data type is specified as an extension of another data type, the extending
data type inherits the corresponding requirements from the extended data type's
definition.

Data types are defined by the following sections:

1. The *identifier* for the data type, which takes the form of a URI.
2. The *extension* of the data type (if any) which specifies which data type
   is extended by the data type.
3. The *properties* of the data type, which define the information the data type
   encapsulates.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14,
[RFC2119](http://tools.ietf.org/html/rfc2119), as scoped to those conformance
targets.

# 2. Common Data Types

Many data types of the GEDCOM X conceptual model share common structures. This section
defines the data types of those shared structures and their requirements for convenient
reference by the other data type definitions.

## 2.1 The URI

The Uniform Resource Identifier ("URI") is fundamental to the GEDCOM X conceptual model.
The URI is used to identify specific resources, such as persons, relationships, and
sources. The URI is also used to identify the data structures that describe those resources
and even the data types that define those data structures. The URI is specified by
[RFC3986](http://tools.ietf.org/html/rfc3986).

## 2.2 The "Identifier" Data Type

The `Identifier` data type defines the data structure used to supply an identifier of a
genealogical resource in a specific data set.

### identifier

The identifier for the "Identifier" data type is:

`http://gedcomx.org/conclusion/v1/Identifier`

### properties

name  | description | data type
------|-------------|----------
value | The value of the identifier. | string (possibly interpreted as a URI, depending on the type of the identifier).
type  | URI identifying the type of the identifier. | [URI](#uri) - MUST resolve to an identifier type. Refer to the list of [known identifier types](#known-identifier-types).

### known identifier types

The following identifier types are defined by GEDCOM X.

URI | description
----|------------
`http://gedcomx.org/Forwarded` |

### examples

todo: fill in some examples.

## 2.3 The "Attribution" Data Type

The `Attribution` data type defines the data structure used to supply the attribution (including
who, when, and why) of genealogical data.

### identifier

The identifier for the "Attribution" data type is:

`http://gedcomx.org/Attribution`

### properties

name  | description | data type
------|-------------|----------
contributor | Reference to the contributor to whom the attributed data is attributed. | [URI](#uri) - MUST resolve to an instance of [`http://xmlns.com/foaf/0.1/Person`](#foaf-person) or [`http://xmlns.com/foaf/0.1/Organization`](#organization).
modified | Timestamp of when the attributed data was contributed. | timestamp
confidence  | Reference to the confidence level of the contributor of the attributed data. | [URI](#uri) - MUST resolve to a confidence level. Refer to the list of [known confidence levels](#known-confidence-levels).
changeMessage | A statement of why the attributed data is being provided by the contributor. | string

### known confidence levels

The following confidence levels are defined by GEDCOM X. For more information, refer to
Mills, Elizabeth Shown. "Fundamentals of Evidence Analysis." Evidence Explained. 2nd ed.
(Baltimore, Maryland: Genealogical Publishing Company, 2009), 19-20 (Section 1.6).

URI | description
----|------------
`http://gedcomx.org/Certainly`|The contributor has no reasonable doubt about the assertion, based upon sound research and good evidence.
`http://gedcomx.org/Probably`|The contributor feels the assertion is more likely than not, based upon sound research and good evidence.
`http://gedcomx.org/Possibly`|The contributor feels some evidence supports the assertion, but the assertion is far from proved.
`http://gedcomx.org/Likely`|The contributor feels the odds weigh at least slightly in favor of the assertion.
`http://gedcomx.org/Apparently`|The contributor has formed an impression or presumption, typically based upon common experience, but has not tested the matter.
`http://gedcomx.org/Perhaps`|The contributor suggests that an idea is plausible, although it remains to be tested.

### examples

todo:

## 2.4 The "FormalValue" Data Type

The `FormalValue` data type defines the data structure used to supply a normalized and/or
standardized value. The formal value is used to supply a formal interpretation of a
value that has been supplied by a user. If the value has been reformatted for the purpose of easier
processing (e.g. for display purposes), it is said to be "normalized". If the value has
been resolved to a discrete, machine-identifiable value based on a specific standard, it is
said to be "standardized".

The `FormalValue` data type does NOT support extension properties (see [Extension Properties](#extension-properties)).

### identifier

The identifier for the "FormalValue" data type is:

`http://gedcomx.org/conclusion/v1/FormalValue`

### properties

name  | description | data type
------|-------------|----------
value | A string supplying the value of the formal value. If the value has been standardized, a datatype will be supplied to identify how the string is to be parsed. | string
datatype  | URI identifying the way the value is to be processed according to a specific standard. | [URI](#uri)
resource | URI identifying the resource to which the formal value has been standardized. | [URI](#uri)

If a value is supplied for the `datatype` property, a value SHALL NOT be supplied for the `resource` property.
If a value is supplied for the `resource` property, a value SHALL NOT be supplied for the `datatype` property.

### examples

* A user supplies the text "jan 1 1890" as the value of a genealogical date. If a process
  (either automated or by user-interaction) normalizes this text to "1 January 1890", the formal
  value containing the results of this normalization will have a value of "1 January 1890"
  and no values specified for either the datatype or the resource.
* A user supplies the text "jan 1 1890" as the value of a genealogical date. If a process
  (either automated or by user-interaction) standardizes this text to a specific date such as
  midnight UTC of the first day of January of the year 1890 A.D. of the Gregorian calendar,
  the formal value containing the results of this standardization might have a value of
  "1890-01-01T00:00:00Z" and a datatype of "http://www.w3.org/2001/XMLSchema#dateTime" and no value
  specified for the resource.
* A user supplies "boston, MA" as the value for a genealogical place. If a process (either
  automated or by user-interaction) standardizes this place to a unique resource (e.g. the
  actual city know today as Boston, Massachusetts) identified by a specific URI (e.g.
  "http://places.com/12345"), the formal value containing the results of this standardization
  will have "http://places.com/12345" as the value of its "resource" property. The formal value
  MAY also supply a value for the "value" property that contains the results of normalizing
  the user-supplied text (e.g. "Boston, Suffolk, Massachusetts, United States").

## 2.5 The "Note" Data Type

The `Note` data type defines a note that was contributed from genealogical research.

Notes are not intended to contain genealogical conclusions.  Notes are only associated with a single genealogical resource.

### identifier

The identifier for the "Note" data type is:

`http://gedcomx.org/Note`

### properties

name  | description | data type
------|-------------|----------
subject | The subject or title of the note. | [`http://gedcomx.org/TextValue`](#text-value)
text | The textual body of the note. | [`http://gedcomx.org/TextValue`](#text-value)
attribution | The attribution of this note. | [`http://gedcomx.org/Attribution`](#attribution)

## 2.6 The "LiteralValue" Data Type

The `LiteralValue` data type defines a literal value.

### identifier

The identifier for the "LiteralValue" data type is:

`http://gedcomx.org/Literal`

### properties

name  | description | data type
------|-------------|----------
datatype  | URI identifying the way the value is to be processed according to a specific standard. | [URI](#uri)
lang | The language of the literal value. | `http://www.w3.org/XML/1998/namespace#lang`
value | The literal value. A datatype MAY be supplied to identify how the string is to be parsed. | string

## 2.7 The "TextValue" Data Type

The `TextValue` data type defines a literal value.

### identifier

The identifier for the "TextValue" data type is:

`http://gedcomx.org/TextValue`

### properties

name  | description | data type
------|-------------|----------
lang | The language of the literal value. | `http://www.w3.org/XML/1998/namespace#lang`
value | The literal value. A datatype MAY be supplied to identify how the string is to be parsed. | string

# 3. Data Types for Describing Sources

Citing sound evidence is a critical component to the exchange of genealogical data. The source of
a piece of genealogical data has to be completely and accurately described in order to be
consistently evaluated by other genealogical researchers. Many sources do not have a digital
representation (e.g. books or other physical artifacts). Sources are instead _described_
and their _description_ is provided as the digital representation of a source.

This section defines the data types that are used for describing and referencing sources.

## 3.1 The "SourceDescription" Data Type

The `SourceDescription` data type defines a description of a source.

### identifier

The identifier for the "SourceDescription" data type is:

`http://gedcomx.org/source/v1/SourceDescription`

### properties

name | description | data type
-----|-------------|----------
id | A local, transient identifier for the resource being described. Note that as a local, transient identifier, the id may only be used to resolve references to the resource within a well-defined scope (such as a single web service request or a single file). | string
citation | The citation for this source. | [`http://gedcomx.org/source/v1/SourceCitation`](#source-citation) - REQUIRED
about | A uniform resource identifier (URI) for the resource being described. | [URI](#uri) - OPTIONAL
mediator | A reference to the entity that mediates access to the described source. | [URI](#uri) - OPTIONAL; MUST resolve to an instance of [`http://xmlns.com/foaf/0.1/Person`](#foaf-person) or [`http://xmlns.com/foaf/0.1/Organization`](#organization).
sources | A list of references to any sources from which this source is derived. | List of [`http://gedcomx.org/source/v1/SourceReference`](#source-reference) - OPTIONAL
componentOf | A reference to the source that contains this source -- its parent context; this is for cases where this description is not complete without the description of its parent context | [`http://gedcomx.org/source/v1/SourceReference`](#source-reference) - OPTIONAL
displayName | A display name for this source. | string - OPTIONAL
alternateNames | A list of alternate display names for this source. | List of [`http://gedcomx.org/TextValue`](#text-value) - OPTIONAL
notes  | A list of notes about a source. | List of [`http://gedcomx.org/Note`](#note) - OPTIONAL
attribution | The attribution of this source description. | [`http://gedcomx.org/Attribution`](#attribution)

## 3.2 The "SourceCitation" Data Type

The `SourceCitation` data type defines a container for the metadata necessary to identify a source(s)
and from which bibliographic citation strings may be rendered.

### identifier

The identifier for the "SourceCitation" data type is:

`http://gedcomx.org/source/v1/SourceCitation`

### properties

name | description | data type
-----|-------------|----------
value | A rendering of the full (working) citation as a string. | string - REQUIRED
citationTemplate | The identifier of the citation template by which this citation may be interpreted. | [URI](#uri) - OPTIONAL;  MUST resolve to an instance of [`http://gedcomx.org/source/v1/CitationTemplate`](#citation-template).
fields  | A list of citation fields about a source. | List of [`http://gedcomx.org/source/v1/CitationField`](#citation-field) - OPTIONAL

## 3.3 The "CitationField" Data Type

The `CitationField` data type defines a piece of metadata (e.g., author, volume, page, publisher, etc.)
necessary to identify a source.

### identifier

The identifier for the "CitationField" data type is:

`http://gedcomx.org/source/v1/CitationField`

### properties

name | description | data type
-----|-------------|----------
name | The identifier for the citation detail -- defined by a citation template or a citation template library. | [URI](#uri) - REQUIRED
value | The value of the citation detail. | string - OPTIONAL

## 3.4 The "SourceReference" Data Type

The `SourceReference` data type defines a reference to a source.  A genealogical conclusion or a
derivate source [the referring object -- the object holding the `SourceReference` instance] cites
its supporting source(s) [the target source(s)] using an instance(s) of `SourceReference`.

### identifier

The identifier for the "SourceReference" data type is:

`http://gedcomx.org/source/v1/SourceReference`

### properties

name | description | data type
-----|-------------|----------
sourceDescription  | Reference to a _description_ of the target source. | [URI](#uri) - MUST resolve to an instance of [`http://gedcomx.org/source/v1/SourceDescription`](#source-description)
attribution | The attribution of this source reference. | [`http://gedcomx.org/Attribution`](#attribution)

### examples

todo:

## 3.5 The "CitationTemplate" Data Type

todo: define citation templates and any associated infrastructure

a note about citation templates (not part of this specification)

Building source citations is said to be an "art" and requires a great deal of flexibility.  While citation style
guides exist (e.g. Chicago style, Turabian, Evidence Style -- see Evidence Explained by Elizabeth Shown Mills,
etc.), they are considered guides and execution within their guidelines allows for flexibility.
No one style has been universally accepted, nor will a style become universally accepted in the forseeable future.  Therefore,
the approach to collecting citation metadata and the exchange of this data needs to support flexibility.

The citation metadata is collected as a set of name-value pairs (see the CitationField data type), but there still remains
a set of difficult questions, including:

What is the set of valid "names" (e.g. controlled vocabulary)?

What "values" are valid values for a given "name"?

What fields (name-value pairs) are required, and under what circumstances might they be optional?

What metadata needs to be collected to properly site data in a specific record?  For example, is a citation for the 1900 US Census
different from a citation for the 1910 US Census and from a citation for the 1911 England and Wales Census?

Further questions remain about how to arrange the fields into citations. For example, given a set of metadata, can it be expressed
in the Chicago style?  The Evidence style?  What about a lesser-used or custom style?

To address these design issues, we define citation templates.  A citation template defines the metadata that should
be collected for a given source and the semantics associated with that metadata.  Templates also specify how the metadata
is rendered into specific citation styles, such as Chicago style or Evidence style.  Templates could be designed to
address specific record types and may be grouped by type (e.g., a group of templates for census records, or newspapers, or
US census records, or UK census records, etc.).  Templates could also be associated with other templates into libraries
such that a specific piece of citation metadata (e.g., a citation field named "Volume") has a shared semantic meanign across the set
of associated templates -- a template library. Perhaps a standard template library could be developed that would address the most
common citation needs.

Citation templates have not been fully specified and are therefore outlined here in broad terms.  For now, this
section functions as a place holder for the needed specifications.  We will likely consider ideas like those expressed
at http://sourcetemplates.org/ when we define this portion of the specification.

# 4. Data Types for Describing Contributors

Genealogical research is performed and data is gathered by a living person or organization.
This section describes the data types that are used to provide information about
contributors of genealogical data.

GEDCOM X refers to the [Friend of a Friend](http://www.foaf-project.org/) project to define the
data types for describing contributors. The data types are duplicated here for convenience
and consistency.

## 4.1 The "OnlineAccount" Data Type

The `OnlineAccount` data type defines a description of an account in an online web application.

### identifier

The identifier for the `OnlineAccount` data type is:

`http://xmlns.com/foaf/0.1/OnlineAccount`

### properties

name | description | data type
-----|-------------|----------
id | A local identifier for the online account. Note that this id MUST NOT be processed as an identifier for the resource being referenced, but instead as a transient identifier for the reference itself. | string
serviceHomepage  | The home page of the service. | [URI](#uri)
accountName | The name of the account. | [`http://gedcomx.org/Literal`](#literal-value)
displayName | A display name for the account. | [`http://gedcomx.org/Literal`](#literal-value)

## 4.2 The "Address" Data Type

The `Address` data type defines a street address of a person or organization. The `Address` data type is
defined by the [Contact](http://www.w3.org/2000/10/swap/pim/contact) schema.

### identifier

The identifier for the `Address` data type is:

`http://www.w3.org/2000/10/swap/pim/contact#Address`

### properties

name | description | data type
-----|-------------|----------
id | A local identifier for the address. Note that this id MUST NOT be processed as an identifier for the resource being referenced, but instead as a transient identifier for the reference itself. | string
city | The city. | string
country | The country. | string
postalCode | The postal code. | string
stateOrProvince | The state or province. | string
street | The street. | string
street2 | The street (second line). | string
street3 | The street (third line). | string

## 4.3 The "Agent" Data Type

The `Agent` data type defines data that is common to a living entity, such as a person (user)
or organization. The `Agent` data type use used as an abstraction to share properties
between contributor data types such as FOAF `Person` and `Organization`.

### identifier

The identifier for the `Agent` data type is:

`http://xmlns.com/foaf/0.1/Agent`

### properties

name | description | data type
-----|-------------|----------
id | A local identifier for the agent. Note that this id MUST NOT be processed as an identifier for the resource being referenced, but instead as a transient identifier for the reference itself. | string
name | The name of the person or organization. | [`http://www.w3.org/2000/01/rdf-schema#Literal`](#rdf-literal)
homepage | The homepage of the person or organization. | [`http://www.w3.org/2000/01/rdf-schema#Literal`](#rdf-literal)
openid  | The [openid](http://openid.net/) of the person or organization. | [`http://www.w3.org/2000/01/rdf-schema#Literal`](#rdf-literal)
accounts  | The online accounts of the person or organization. | List of [`http://xmlns.com/foaf/0.1/OnlineAccount`](#online-account). Order is preserved.
emails  | The email addresses of the person or organization. | List of [URI](#uri) - MUST resolve to a valid e-mail address (e.g. "mailto:someone@gedcomx.org"). Order is preserved.
phones  | The phones (voice, fax, mobile) of the person or organization. | List of [URI](#uri) - MUST resolve to a valid phone number (e.g. "tel:+1-201-555-0123"). Order is preserved.
addresses  | The addresses of the person or organization. | List of [`http://www.w3.org/2000/10/swap/pim/contact#Address`](#address). Order is preserved.

## 4.4 The "Organization" Data Type

The `Organization` data type defines data describing an organization.

### identifier

The identifier for the `Organization` data type is:

`http://xmlns.com/foaf/0.1/Organization`

### extension

This data type extends the following data type:

`http://xmlns.com/foaf/0.1/Agent`

### properties

The `Organization` data type defines no additional properties beyond those defined by
its extended type.

## 4.5 The "FOAF Person" Data Type

The `Person` data type defines data that is common to a living person (user). The `Person`
data type is an extension of the `Agent` data type.

### identifier

The identifier for the `Person` data type is:

`http://xmlns.com/foaf/0.1/Person`

### extension

This data type extends the following data type:

`http://xmlns.com/foaf/0.1/Agent`

### properties

name | description | data type
-----|-------------|----------
familyName | The family name of the person. | [`http://www.w3.org/2000/01/rdf-schema#Literal`](#rdf-literal)
givenName | The given name of the person. | [`http://www.w3.org/2000/01/rdf-schema#Literal`](#rdf-literal)
language | The language of the person. | [`http://www.w3.org/2000/01/rdf-schema#Literal`](#rdf-literal)

# 5. Data Types for Describing Conclusions

This section describes the data types that are used to define genealogical conclusions.

## 5.1 The "Conclusion" Data Type

The `Conclusion` data type defines the base conceptual model for basic genealogical conclusions.

### identifier

The identifier for the `Conclusion` data type is:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
id | A local identifier for the conclusion. Note that this id MUST NOT be processed as an identifier for the resource being referenced, but instead as a transient identifier for the reference itself. | string
sources | The list of references to the sources of related to this conclusion. The sources of a conclusion MUST also be sources of the conclusion's containing entity (i.e. [`Person`](#person) or [`Relationship`](#relationship) ).| List of [`http://gedcomx.org/conclusion/v1/SourceReference`](#source-reference). Order is preserved.
notes  | A list of notes about a conclusion. | List of [`http://gedcomx.org/Note`](#note) - OPTIONAL
attribution | The attribution of this conclusion. | [`http://gedcomx.org/Attribution`](#attribution)

## 5.2 The "Document" Data Type

The `Document` data type defines the base conceptual model for genealogical conclusions that are managed as textual documents.  The `Document` data type extends the `Conclusion` data type.

### identifier

The identifier for the `Document` data type is:

`http://gedcomx.org/conclusion/v1/Document`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
text | The text of the document. | [`http://gedcomx.org/TextValue`](#text-value)

## 5.2.1 The "AbstractDocument" Data Type

The `AbstractDocument` data type is used to represent document abstracts.  The `AbstractDocument` data type extends the `Document` data type.

### identifier

The identifier for the `AbstractDocument` data type is:

`http://gedcomx.org/conclusion/v1/AbstractDocument`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Document`

### properties

The `AbstractDocument` data type defines no additional properties beyond those defined by its extended type.

## 5.2.2 The "TranscriptionDocument" Data Type

The `TranscriptionDocument` data type is used to represent document transcriptions -- to include partial transcriptions (also called extracts).  The `TranscriptionDocument` data type extends the `Document` data type.

### identifier

The identifier for the `TranscriptionDocument` data type is:

`http://gedcomx.org/conclusion/v1/TranscriptionDocument`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Document`

### properties

The `TranscriptionDocument` data type defines no additional properties beyond those defined by its extended type.

## 5.2.3 The "TranslationDocument" Data Type

The `TranslationDocument` data type is used to represent document translations.  The `TranslationDocument` data type extends the `Document` data type.

### identifier

The identifier for the `TranslationDocument` data type is:

`http://gedcomx.org/conclusion/v1/TranslationDocument`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Document`

### properties

The `TranslationDocument` data type defines no additional properties beyond those defined by its extended type.

## 5.2.4 The "AnalysisDocument" Data Type

The `AnalysisDocument` data type is used to represent documents with evidence analysis -- e.g., a genealogical proof statement.  The `AnalysisDocument` data type extends the `Document` data type.

### identifier

The identifier for the `AnalysisDocument` data type is:

`http://gedcomx.org/conclusion/v1/AnalysisDocument`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Document`

### properties

The `AnalysisDocument` data type defines no additional properties beyond those defined by its extended type.

## 5.3 The "Gender" Data Type

The `Gender` data type defines a conclusion about the gender of a person. the `Gender` data type
extends the `Conclusion` data type.

### identifier

The identifier for the `Gender` data type is:

`http://gedcomx.org/conclusion/v1/Gender`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
type | URI identifying the type of the gender. | [URI](#uri) - MUST resolve to a gender type. Refer to the list of [known gender types](#known-gender-types).

### known gender types

The following gender types are defined by GEDCOM X:

URI | description
----|-------------
`http://gedcomx.org/Male`|
`http://gedcomx.org/Female`|
`http://gedcomx.org/Unknown`|

## 5.4 The "Name" Data Type

The `Name` data type defines a conclusion about a name of a person. The `Name` data type
extends the `Conclusion` data type.

### identifier

The identifier for the `Name` data type is:

`http://gedcomx.org/conclusion/v1/Name`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
type | URI identifying the type of the name. | [URI](#uri) - MUST resolve to a name type. Refer to the list of [known name types](#known-name-types).
preferred | Whether this name is preferred above the other names of a person. | boolean
primaryForm | The primary form of the name. | `http://gedcomx.org/conclusion/v1/NameForm`
alternateForms | The alternate forms of the name. | List of [`http://gedcomx.org/conclusion/v1/NameForm`](#name-form). Order is preserved.

### known name types

The following name types are defined by GEDCOM X:

URI | description
----|-------------
`http://gedcomx.org/Name`|
`http://gedcomx.org/BirthName`|
`http://gedcomx.org/DeathName`|
`http://gedcomx.org/MarriedName`|
`http://gedcomx.org/AlsoKnownAs`|
`http://gedcomx.org/MaidenName`|
`http://gedcomx.org/Nickname`|
`http://gedcomx.org/Adoptive`|
`http://gedcomx.org/Formal`|
`http://gedcomx.org/Religious`|

## 5.5 The "Fact" Data Type

The `Fact` data type defines a conclusion about a fact of the life of a person or
the nature of a relationship. The `Fact` data type extends the `Conclusion` data type.

### identifier

The identifier for the `Fact` data type is:

`http://gedcomx.org/conclusion/v1/Fact`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
type | URI identifying the type of the fact. | [URI](#uri) - MUST resolve to a fact type. See the list of [known fact types](#known-fact-types).
date | The date of applicability of the fact. | [`http://gedcomx.org/conclusion/v1/Date`](#conclusion-date)
place | The place of applicability of the fact. | [`http://gedcomx.org/conclusion/v1/Place`](#conclusion-place)
original | The value of the fact as supplied by the contributor. | string
formal | The formal value of the fact. | [`http://gedcomx.org/conclusion/v1/FormalValue`](#formal-value)

### known fact types

The following fact types are defined by GEDCOM X:

URI | description | scope
----|-------------|------
`http://gedcomx.org/Adoption`| | person
`http://gedcomx.org/AdultChristening`| | person
`http://gedcomx.org/Affiliation`| | person
`http://gedcomx.org/Age`| | person
`http://gedcomx.org/Baptism`| | person
`http://gedcomx.org/BarMitzvah`| | person
`http://gedcomx.org/BatMitzvah`| | person
`http://gedcomx.org/Birth`| | person
`http://gedcomx.org/Blessing`| | person
`http://gedcomx.org/Burial`| | person
`http://gedcomx.org/CasteName`| | person
`http://gedcomx.org/Census`| | person
`http://gedcomx.org/Christening`| | person
`http://gedcomx.org/Circumcision`| | person
`http://gedcomx.org/Citizenship`| | person
`http://gedcomx.org/ClanName`| | person
`http://gedcomx.org/Confirmation`| | person
`http://gedcomx.org/CountOfChildren`| | person
`http://gedcomx.org/CountOfMarriages`| | person
`http://gedcomx.org/Cremation`| | person
`http://gedcomx.org/Death`| | person
`http://gedcomx.org/DiedBeforeEight`| | person
`http://gedcomx.org/Dwelling`| | person
`http://gedcomx.org/Education`| | person
`http://gedcomx.org/Emigration`| | person
`http://gedcomx.org/Ethnicity`| | person
`http://gedcomx.org/Excommunication`| | person
`http://gedcomx.org/FirstCommunion`| | person
`http://gedcomx.org/Flourish`| | person
`http://gedcomx.org/Funeral`| | person
`http://gedcomx.org/GedcomUUID`| | person
`http://gedcomx.org/Illness`| | person
`http://gedcomx.org/Immigration`| | person
`http://gedcomx.org/Interment`| | person
`http://gedcomx.org/Living`| | person
`http://gedcomx.org/MaritalStatus`| | person
`http://gedcomx.org/MilitaryAward`| | person
`http://gedcomx.org/MilitaryCompany`| | person
`http://gedcomx.org/MilitaryDischarge`| | person
`http://gedcomx.org/MilitaryRank`| | person
`http://gedcomx.org/MilitaryRegiment`| | person
`http://gedcomx.org/MilitaryService`| | person
`http://gedcomx.org/MilitaryServiceBranch`| | person
`http://gedcomx.org/Mission`| | person
`http://gedcomx.org/Move`| | person
`http://gedcomx.org/NameOfShip`| | person
`http://gedcomx.org/Naturalization`| | person
`http://gedcomx.org/Namesake`| | person
`http://gedcomx.org/NationalId`| | person
`http://gedcomx.org/Nationality`| | person
`http://gedcomx.org/NeverHadChildren`| | person
`http://gedcomx.org/NeverMarried`| | person
`http://gedcomx.org/NotAccountable`| | person
`http://gedcomx.org/Occupation`| | person
`http://gedcomx.org/Ordinance`| | person
`http://gedcomx.org/Ordination`| | person
`http://gedcomx.org/PhysicalDescription`| | person
`http://gedcomx.org/PortOfDeparture`| | person
`http://gedcomx.org/PreviousResidence`| | person
`http://gedcomx.org/Probate`| | person
`http://gedcomx.org/Property`| | person
`http://gedcomx.org/Race`| | person
`http://gedcomx.org/RelationshipToHead`| | person
`http://gedcomx.org/Religion`| | person
`http://gedcomx.org/Residence`| | person
`http://gedcomx.org/Retirement`| | person
`http://gedcomx.org/SocialSecurityNumber`| | person
`http://gedcomx.org/Stillborn`| | person
`http://gedcomx.org/TitleOfNobility`| | person
`http://gedcomx.org/TribeName`| | person
`http://gedcomx.org/Twin`| | person
`http://gedcomx.org/Will`| | person
`http://gedcomx.org/Annulment`| | couple relationship
`http://gedcomx.org/CommonLawMarriage`| | couple relationship
`http://gedcomx.org/CurrentlySpouses`| | couple relationship
`http://gedcomx.org/Divorce`| | couple relationship
`http://gedcomx.org/DivorceFiling`| | couple relationship
`http://gedcomx.org/Engagement`| | couple relationship
`http://gedcomx.org/Marriage`| | couple relationship
`http://gedcomx.org/MarriageBanns`| | couple relationship
`http://gedcomx.org/MarriageContract`| | couple relationship
`http://gedcomx.org/MarriageIntent`| | couple relationship
`http://gedcomx.org/MarriageLicense`| | couple relationship
`http://gedcomx.org/MarriageNotice`| | couple relationship
`http://gedcomx.org/MarriageSettlement`| | couple relationship
`http://gedcomx.org/NumberOfChildren`| | couple relationship
`http://gedcomx.org/Separation`| | couple relationship
`http://gedcomx.org/UniversalId`| | couple relationship
`http://gedcomx.org/Biological`| | parent-child relationship
`http://gedcomx.org/Adopted`| | parent-child relationship
`http://gedcomx.org/Step`| | parent-child relationship
`http://gedcomx.org/Foster`| | parent-child relationship
`http://gedcomx.org/Guardianship`| | parent-child relationship

## 5.6 The "Person" Data Type

The `Person` data type defines a description of a person. The `Person` data type
extends the `Conclusion` data type.

### identifier

The identifier for the `Person` data type is:

`http://gedcomx.org/conclusion/v1/Person`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
identifiers | Identifiers for the person. | List of [`http://gedcomx.org/conclusion/v1/Identifier`](#identifier-type). Order is preserved.
living | Whether the person is considered living. | boolean
gender | The conclusion about the gender of the person. | [`http://gedcomx.org/conclusion/v1/Gender`](#gender)
names | The conclusions about the names of the person. | List of [`http://gedcomx.org/conclusion/v1/Name`](#name-conclusion). Order is preserved.
facts | The conclusions about the facts of the life of the person. | List of [`http://gedcomx.org/conclusion/v1/Fact`](#fact-conclusion). Order is preserved.

## 5.7 The "Relationship" Data Type

The `Relationship` data type describes the relationship between two persons. The `Relationship` data type
extends the `Conclusion` data type.

### identifier

The identifier for the `Relationship` data type is:

`http://gedcomx.org/conclusion/v1/Relationship`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
type | URI identifying the type of the relationship. | [URI](#uri) - MUST resolve to a relationship type. Refer to the list of [known relationship types](#known-relationship-types)
person1 | Reference to the first person in the relationship. | [URI](#uri) - MUST resolve to an instance of [`http://gedcomx.org/conclusion/v1/Person`](#person)
person2 | Reference to the second person in the relationship. | [URI](#uri) - MUST resolve to an instance of [`http://gedcomx.org/conclusion/v1/Person`](#person)
facts | The conclusions about the facts of the life of the relationship. | List of [`http://gedcomx.org/conclusion/v1/Fact`](#fact-conclusion). Order is preserved.

Note: when a relationship type implies direction, the relationship is said to
be *from* person1 *to* person2. For example, in a parent-child relationship, the
`person1` property refers to the parent and the `person2` property refers to the
child.

### known relationship types

The following relationship types are defined by GEDCOM X:

URI | description
----|-------------
`http://gedcomx.org/Couple`|
`http://gedcomx.org/ParentChild`|

## 5.8 The "EventRole" Data Type

The `EventRole` data type defines a role played in an event by a person.  The `EventRole` data type extends the `Conclusion` data type.

### identifier

The identifier for the `EventRole` data type is:

`http://gedcomx.org/conclusion/v1/EventRole`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
person | Reference to the person playing the role in the event. | [`URI`](#uri) - MUST resolve to an instance of [`http://gedcomx.org/conclusion/v1/Person`](#person)
type | Reference to the role type. | [`URI`](#uri) - MUST resolve to a role type. Refer to the list of [known role types](#known-roles).
details | Details about the role of the person in the event. | string

### known role types

The following role types are defined by GEDCOM X:

URI | description
----|------------
`http://gedcomx.org/Principal`|
`http://gedcomx.org/Participant`|
`http://gedcomx.org/Official`|
`http://gedcomx.org/Witness`|

## 5.9 The "Event" Data Type

The `Event` data type defines a description of a historical event. The `Event` data type
extends the `Conclusion` data type.

### identifier

The identifier for the `Event` data type is:

`http://gedcomx.org/conclusion/v1/Event`

### extension

This data type extends the following data type:

`http://gedcomx.org/conclusion/v1/Conclusion`

### properties

name | description | data type
-----|-------------|----------
type | URI identifying the type of the event. | [URI](#uri). MUST resolve to an event type. Refer to the list of [known event types](#known-event-types)
date | The date of the event. | [`http://gedcomx.org/conclusion/v1/Date`](#conclusion-date)
place | The place of the event. | [`http://gedcomx.org/conclusion/v1/Place`](#conclusion-place)
roles | The roles of the persons in the event. | List of [`http://gedcomx.org/conclusion/v1/EventRole`](#conclusion-event-role). Order is preserved.

### known event types

The following event types are defined by GEDCOM X:

URI | description
----|------------
`http://gedcomx.org/Adoption`|
`http://gedcomx.org/AdultChristening`|
`http://gedcomx.org/Annulment`|
`http://gedcomx.org/Arrival`|
`http://gedcomx.org/Baptism`|
`http://gedcomx.org/BarMitzvah`|
`http://gedcomx.org/BatMitzvah`|
`http://gedcomx.org/Birth`|
`http://gedcomx.org/Blessing`|
`http://gedcomx.org/Burial`|
`http://gedcomx.org/Census`|
`http://gedcomx.org/Christening`|
`http://gedcomx.org/Circumcision`|
`http://gedcomx.org/Confirmation`|
`http://gedcomx.org/Cremation`|
`http://gedcomx.org/Death`|
`http://gedcomx.org/Departure`|
`http://gedcomx.org/Divorce`|
`http://gedcomx.org/DivorceFiling`|
`http://gedcomx.org/Education`|
`http://gedcomx.org/Engagement`|
`http://gedcomx.org/Emigration`|
`http://gedcomx.org/Excommunication`|
`http://gedcomx.org/FirstCommunion`|
`http://gedcomx.org/Funeral`|
`http://gedcomx.org/Graduation`|
`http://gedcomx.org/Immigration`|
`http://gedcomx.org/Interment`|
`http://gedcomx.org/Marriage`|
`http://gedcomx.org/MilitaryAward`|
`http://gedcomx.org/MilitaryDischarge`|
`http://gedcomx.org/Mission`|
`http://gedcomx.org/Move`|
`http://gedcomx.org/Ordinance`|
`http://gedcomx.org/Ordination`|
`http://gedcomx.org/Retirement`|

## 5.10 The "Date" Data Type

The `Date` data type defines the value of a genealogical date.

### identifier

The identifier for the `Date` data type is:

`http://gedcomx.org/conclusion/v1/Date`

### properties

name | description | data type
-----|-------------|----------
original | The original value of the date as supplied by the contributor. | string
formal | The formal value of the date. | [`http://gedcomx.org/FormalValue`](#formal-value)

### known date formats

The following date formats are recognized by GEDCOM X:

URI | description
----|-------------
`http://gedcomx.org/GEDCOM_5_5` | The date format specified by the GEDCOM 5.5 specification.
`iso:8601` | The date format specified by [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601).

## 5.11 The "Place" Data Type

The `Place` data type defines the value of a genealogical place.

### identifier

The identifier for the `Place` data type is:

`http://gedcomx.org/conclusion/v1/Place`

### properties

name | description | data type
-----|-------------|----------
original | The original value of the place as supplied by the contributor. | string
formal | The formal value of the place. | [`http://gedcomx.org/FormalValue`](#formal-value)

## 5.12 The "NamePart" Data Type

The `NamePart` data type defines a part of a name of a person.

### identifier

The identifier for the `NamePart` data type is:

`http://gedcomx.org/conclusion/v1/NamePart`

### properties

name | description | data type
-----|-------------|----------
type | URI identifying the type of the name part. | [URI](#uri) - MUST resolve to a name part type. Refer to the list of [known name part types](#known-name-part-types).
value | The value of the name part. | string

### known name part types

The following name part types are defined by GEDCOM X:

URI | description
----|-------------
`http://gedcomx.org/Prefix`|
`http://gedcomx.org/Suffix`|
`http://gedcomx.org/Given`|
`http://gedcomx.org/Surname`|

## 5.13 The "NameForm" Data Type

The `NameForm` data type defines a form of a name of a person.

### identifier

The identifier for the `NameForm` data type is:

`http://gedcomx.org/conclusion/v1/NameForm`

### properties

name | description | data type
-----|-------------|----------
fullText | The full text of the name form. | string
parts | The parts of the name form. | List of [`http://gedcomx.org/conclusion/v1/NamePart`](#name-part). Order is preserved.

# 6. Extensibility

## Extensions from Non-GEDCOM X Vocabularies

This specification provides the data types and properties that define GEDCOM X.
Other data types and vocabularies ("foreign vocabularies") can be used in
GEDCOM X data types.

## Extensions to the GEDCOM X Vocabulary

The GEDCOM X namespaces are reserved for future forward-compatible revisions
of GEDCOM X. Future versions of this specification could add new data types and
properties to the GEDCOM X vocabulary.  Software written to conform to this
version of the specification will not be able to process such extensions correctly
and, in fact, will not be able to distinguish such extensions from error.  For
the purposes of this discussion, unrecognized data types and properties from the
GEDCOM X vocabulary will be considered "foreign vocabularies".

## Processing Foreign Vocabularies

GEDCOM X Processors that encounter foreign vocabularies in a location that is
legal according to this specification MUST NOT stop processing or
signal an error.  It might be the case that the GEDCOM X Processor is
able to process the foreign vocabularies correctly and does so.  Otherwise,
such vocabularies are termed "unknown foreign vocabularies".

When unknown foreign vocabularies are encountered, GEDCOM X Processors MAY
bypass the foreign properties, type references, and textual content and
MUST NOT change their behavior as a result of the presence of the vocabulary.

## Extension Properties

GEDCOM X allows properties of foreign vocabularies in any data type, except
where it is explicitly forbidden.

## Extension Types

GEDCOM X allows data types of foreign vocabularies to be referenced anywhere
data types are defined to be referenced. Examples of data type references include
name types, fact types, resource types, etc. GEDCOM X supplies its own set of
"known" data types and implementors are encouraged to use the list of known data
types as much as possible to preserve maximum compatibility.

## User-Defined Types

Some applications MAY allow data types to be provided. For example, a genealogy
application may provide a feature that allows a user to supply a "custom" fact
about the life of a person when the list of known fact types doesn't contain
the type of fact the user may want to add.

In the case where a user has supplied a title or description instead of selecting
a known data type, GEDCOM X recognizes the data URI scheme as defined by
[RFC 2397](http://tools.ietf.org/html/rfc2397).

# 7. Miscellaneous To Do

todo: add details about which properties are required.

todo: supply details about how GEDCOM X defines its evidence model.

repository: dovy/gedcomx

repo_name: dovy/gedcomx


text:
### Development Status

| Image | Meaning |
| ------------- |------|
| ✔ | Done |
| ❌ | Todo |

# Layers
---

## Core layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----|------|---------|
| Dense | ✔ | ✔ | ✔ | Just your regular densely-connected NN layer. |
| Dropout | ✔ | ✔ | ✔ | Applies Dropout to the input. |
| Flatten | ✔ | ✔ | ✔ | Flattens the input. Does not affect the batch size. (Wrapper for Reshape) |
| Input | ✔ | ✔ | ✔ | Used to instantiate a EDDL tensor. |
| Reshape | ✔ | ✔ | ✔ | Reshapes an output to a certain shape. |
| Permute | ✔ | ✔ | ✔  | Permutes the dimensions of the input according to a given pattern. |
| Embedding | ✔ | ✔ | ❌ | Turns positive integers (indexes) into dense vectors of fixed size; (also known as mapping). e.g. `[[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]` |
| Transpose | ✔ | ✔ | ❌ | Permute the last two dimensions |

## Activations

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----|------| ---------|
| ELU | ✔ | ✔ | ✔ | Exponential linear unit. |
| Exponential |  ✔ | ✔ | ✔ | Exponential (base e) activation function. |
| HardSigmoid | ✔ | ✔ | ✔ | Hard sigmoid activation function. |
| LeakyReLu | ✔ | ✔ | ✔ | Leaky version of a Rectified Linear Unit.  |
| Linear | ✔ | ✔ | ✔ | Linear (i.e. identity) activation function.  |
| PReLU | ❌ | ❌ | ❌ | Parametric Rectified Linear Unit.   |
| ReLu | ✔ | ✔ | ✔ | Rectified Linear Unit. |
| Softmax | ✔ | ✔ | ✔ | Softmax activation function. |
| Selu |  ✔ | ✔ | ✔ | Scaled Exponential Linear Unit (SELU). |
| Sigmoid | ✔ | ✔ | ✔ | Sigmoid activation function. |
| Softplus | ✔ | ✔ | ✔ | Softplus activation function. |
| Softsign | ✔ | ✔ | ✔ | Softsign activation function. |
| Tanh | ✔ | ✔ | ✔ | Hyperbolic tangent activation function. |
| ThresholdedReLU | ✔ | ✔ | ✔ | Thresholded Rectified Linear Unit. |

## Convolutional layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| Conv2D | ✔ | ✔ | ✔ | 2D convolution. |
| Conv2DT | ❌ | ❌ | ❌ | Transposed convolution |
| UpSampling | ✔ | ✔ | ✔ | Practically the same as `Scale(mode="nearest")`. Instead of performing nearest interpolation, this works by repeating n times the elements of each axis `[2, 1] => [2, 2, 1, 1]`. |

## Data transformation/augmentation

### Data transformations

Deterministic transformations

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| Affine | ❌ | ❌ | ❌ | Affine transformation of the image keeping center invariant: rotate+translate+scale+shear |
| Crop | ✔ | ✔ | ❌ | Crops the given image at `[(top, left), (bottom, right)]` |
| CenteredCrop | ✔ | ✔ | ❌ | Crops the given image at the center with size (width, height)  |
| ColorJitter | ❌ | ❌ | ❌ | Randomly change the brightness, contrast and saturation of an image. |
| CropScale | ✔ | ✔ | ❌ | Crop the given image at `[(top, left), (bottom, right)]` and scale it to the parent size |
| Cutout | ✔ | ✔ | ❌ | Selects a rectangle region in an image at `[(top, left), (bottom, right)]` and erases its pixels using a constant value. |
| Flip | ✔ | ✔ | ❌ | Flip the given image at `axis=n`. |
| Grayscale | ❌ | ❌ | ❌ | Convert image to grayscale. |
| HorizontalFlip | ✔ | ✔ | ❌ | Horizontally flip the given image. |
| Pad | ❌ | ❌ | ❌ | Pad the given image on all sides with the given "pad" value. |
| Rotate | ✔ | ✔ | ❌ | Rotate the image by angle. |
| Scale | ✔ | ✔ | ❌ | Resize the input image to the given size. `[height, width]` |
| Shift | ✔ | ✔ | ❌ | Shift the input image `[a, b]` |
| VerticallyFlip | ✔ | ✔ | ❌ | Vertically flip the given image. |
| Normalize | ❌ | ❌ | ❌ | Normalize an image with mean and standard deviation. |

### Data augmentations

Apply data transformations with random parametrization.

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| RandomAffine | ❌ | ❌ | ❌ | Random affine transformation of the image keeping center invariant: rotate+translate+scale+shear |
| RandomCrop | ✔ | ✔ | ❌ | Crop the given image at a random location with size `[height, width]`  |
| RandomCropScale | ✔ | ✔ | ❌ | Crop the given image randomly by the size in a range `[a, b]` by and scale it to the parent size |
| RandomCutout | ✔ | ✔ | ❌ | Randomly selects a rectangle region in an image and erases its pixels. The random region is defined by the range `[(min_x, max_x), (min_y, max_y)]`, where these are relative values |
| RandomFlip | ✔ | ✔ | ❌ | Flip the given image at `axis=n` randomly with a given probability. |
| RandomGrayscale | ❌ | ❌ | ❌ | Randomly convert image to grayscale with a probability of p (default 0.1). |
| RandomHorizontalFlip | ✔ | ✔ | ❌ | Horizontally flip the given image randomly with a given probability. |
| RandomRotation | ✔ | ✔ | ❌ | Rotate the image randomly by an angle defined in a range `[a, b]`. |
| RandomScale | ✔ | ✔ | ❌ | Resize the input image randomly by the size in a range `[a, b]` |
| RandomShift | ✔ | ✔ | ❌ | Shift the input image randomly in range `[a, b]` |
| RandomVerticalFlip | ✔ | ✔ | ❌ | Vertically flip the given image randomly with a given probability. |

## Merge layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| Add | ✔ | ✔ | ✔  | Layer that adds a list of inputs. |
| Average | ✔ | ✔ | ✔  | Layer that averages a list of inputs. |
| Concatenate | ✔ | ✔ | ✔ | Layer that concatenates a list of inputs. |
| Dot |  ❌ | ❌ | ❌ | Layer that computes a dot product between samples in two tensors.  |
| Multiply | ✔ | ✔ | ✔  | Layer that multiplies (element-wise) a list of inputs. |
| Maximum | ✔ | ✔ | ✔  | Layer that computes the maximum (element-wise) a list of inputs. |
| Minimum | ✔ | ✔ | ✔  | Layer that computes the minimum (element-wise) a list of inputs. |
| Substract | ✔ | ✔ | ✔  | Layer that subtracts two inputs. |

## Normalization

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| BatchNorm | ✔ | ✔ | ✔ | Batch normalization layer (Ioffe and Szegedy, 2014).  |
| LayerNormalization | ✔ | ✔ | ❌ | Layer normalization layer (Ba et al., 2016)  |
| GroupNormalization | ✔ | ✔ | ❌ | Group normalization layer (Yuxin Wu and Kaiming He, 2018).  |
| Norm | ✔ | ✔ | ❌ |   |
| NormMax | ✔ | ✔ | ❌ |   |
| NormMinMax | ✔ | ✔ | ❌ |   |

## Noise layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| GaussianNoise | ✔ | ✔ | ❌ | Apply additive zero-centered Gaussian noise. |
| UniformNoise | ✔ | ✔ | ❌ | Apply additive zero-centered uniform noise.

## Pooling layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| AvgPool | ✔ | ✔ | ✔ | Average max pooling operation |
| GlobalMaxPool | ✔ | ✔ | ❌ | Global max pooling operation |
| GlobalAveragePool | ✔ | ✔ | ❌ | Global average pooling operation |
| MaxPool | ✔ | ✔ | ✔ | Max pooling operation |

## Operators layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| Abs |  ✔ | ✔ | ❌ | |
| Diff | ✔ | ✔ | ❌ | |
| Div | ✔ | ✔ | ❌ | |
| Exp | ✔ | ✔ | ❌ | |
| Log | ✔ | ✔ | ❌ | |
| Log2 |  ✔ | ✔ | ❌ | |
| Log10 | ✔ | ✔ | ❌ | |
| Mult | ✔ | ✔| ❌ | |
| Pow |  ✔ | ✔ | ❌ | |
| Select |  ✔ | ✔ | ❌ | |
| Sqrt |  ✔ | ✔ | ❌ | |
| Sum | ✔ | ✔ | ❌ | |

## Reduction layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| Max | ✔| ✔ | ❌ | |
| Mean | ✔| ✔ | ❌ | |
| Min | ✔| ✔ | ❌ | |
| Sum | ✔| ✔ | ❌ | |
| Var | ✔| ✔ | ❌ | |

## Recurrent layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| GRU | ❌ | ❌ | ❌ | Gated Recurrent Unit - Cho et al. 2014. |
| LSTM | ✔ | ✔  | ❌ | Long Short-Term Memory layer - Hochreiter 1997. |
| RNN | ✔ | ✔  | ❌ | Fully-connected RNN where the output is to be fed back to input. |

## Regularizer layers

| Functionality | CPU | GPU | ONNX | Comments |
| ------------- |------| -----| ------|---------|
| L1 | ✔ | ✔ | ❌ | Lasso Regression |
| L2 | ✔ | ✔ | ❌ | Ridge Regression |
| L1L2 | ✔ | ✔ | ❌ |  |

# Initializers

| Functionality | CPU | GPU | Comments |
| ------------- |------| -----|---------|
| Constant | ✔ | ✔ | Initializer that generates tensors initialized to a constant value |
| GlorotNormal | ✔ | ✔ | Glorot normal initializer, also called Xavier normal initializer. |
| GlorotUniform | ✔ | ✔ | Glorot uniform initializer, also called Xavier uniform initializer. |
| HeNormal | ❌ | ❌ | _He_ normal initializer. |
| HeUniform | ❌ | ❌ | _He_ uniform initializer. |
| Identity | ❌ | ❌ | Initializer that generates the identity matrix. |
| LeCunUniform | ❌ | ❌ | LeCun uniform initializer. |
| LeCunNormal | ❌ | ❌ | LeCun normal initializer. |
| Orthogonal | ❌ | ❌ | Initializer that generates a random orthogonal matrix.  |
| RandomNormal |  ✔ | ✔ | Initializer that generates tensors with a normal distribution. |
| RandomUniform |  ✔ | ✔ | Initializer that generates tensors with a uniform distribution.  |
| TruncatedNormal | ❌ | ❌  | Initializer that generates a truncated normal distribution.  |
| VarianceScaling | ❌  | ❌ | Initializer capable of adapting its scale to the shape of weights.  |

# Constraints

| Functionality | CPU | GPU | Comments |
| ------------- |------| -----|---------|
| MaxNorm |  ❌ | ❌ | MaxNorm weight constraint. |
| MinMaxNorm |  ❌ | ❌ | MinMaxNorm weight constraint. |
| NonNeg |  ❌ | ❌ | Constrains the weights to be non-negative.  |
| UnitNorm |  ❌ | ❌ | Constrains the weights incident to each hidden unit to have unit norm. |

# Loss functions

| Functionality | CPU | GPU | Comments |
| ------------- |------| -----|---------|
| CrossEntropy | ✔ | ✔ | Categorical Cross-Entropy Error |
| MSE | ✔ | ✔ | Mean Squared Error |
| MAE | ❌ | ❌ | Mean Absolute Error  |
| MRE | ❌ | ❌ | Mean Relative Error |
| MSLE | ❌ | ❌ | Mean Squared Logarithmic Error |
| Min | ✔ | ✔ | Minimum Error |
| Hinge | ❌ | ❌ | Hinge Error |
| Dice  | ✔ | ✔  | Dice loss |
| SoftCrossEntropy | ✔ | ✔ | Soft-Categorical Cross-Entropy Error |

# Metric functions

| Functionality | CPU | GPU | Comments |
| ------------- |------| -----|---------|
| CategoricalAccuracy | ✔ | ✔ | |
| TopKAccuracy | ❌ | ❌ | |
| CosineProximity | ❌ | ❌ | |
| MSE | ✔ | ✔ | Mean Squared Error |
| MAE | ✔ | ✔ | Mean Absolute Error  |
| MRE | ✔ | ✔ | Mean Relative Error |
| Sum | ✔ | ✔ | Sum Error |
| Dice  | ✔ | ✔  | Dice error |

# Optimizers

| Functionality | CPU | GPU | Comments |
| ------------- |------| -----|---------|
| Adadelta |❌ | ❌ | Adadelta optimizer. |
| Adagrad | ❌ | ❌ | Adagrad optimizer. |
| Adam | ✔ | ✔ | Adam optimizer. |
| Adamax | ❌ | ❌ | Adamax optimizer from Adam paper's Section 7.  |
| Nadam | ❌ | ❌ | Nesterov Adam optimizer. |
| RMSProp |✔ | ✔ | RMSProp optimizer.  |
| SGD | ✔ | ✔ | Stochastic gradient descent optimizer. |

license: MIT

repository: ilveroluca/eddl

branch_name: refs/heads/master

extension: md

gha_license_id: MIT

license_type: permissive

repo_name: ilveroluca/eddl


text:
# LoanTransfer

## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**date** | **datetime** | Payment date | [optional]
**principal_amount** | **float** | Principal amount | [optional]
**interest_amount** | **float** | Interest amount | [optional]
**interest_amount_carried_over** | **float** | Interest carried over amount | [optional]
**penalty_amount_carried_over** | **float** | Penalty amount | [optional]
**total_amount** | **float** | Total amount | [optional]

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


text:
# Programming Resources

## Top programming authors

- [Ian Bicking - Home Page](https://www.ianbicking.org/)
- [Chris Siebenmann](https://utcc.utoronto.ca/~cks/space/blog/)
- [Ray Wenderlich](https://www.raywenderlich.com/) - Tutorials for iPhone & iOS Developers and Gamers
- [Adam the Automator](https://adamtheautomator.com/)
- [Alvina Alexander - Java, Scala, Unix, MacOS Tutorials](https://alvinalexander.com/)
- [Scott Hanselman - Coder, Blogger, Teacher, Speaker, Author](https://www.hanselman.com/)
- [The Crazy Programmer](https://www.thecrazyprogrammer.com/) - It will guide you through the simplest basics of Java, Android, PHP, SQL and many more languages.
- [Coding Horror Blog - Jeff Atwood](https://blog.codinghorror.com/)
- [Dedoimedo - A place to learn a lot about a lot](https://www.dedoimedo.com/)
- [Java, SQL and jOOQ](https://blog.jooq.org/) - Best Practices and Lessons Learned from Writing Awesome Java and SQL Code. JOOQ tidbits.
- [Joel on Software](https://www.joelonsoftware.com/)
- [Schneier on Security](https://www.schneier.com/)
- [Julia Evans](https://jvns.ca/)
- [Krasimir Tsonev - Writer, Speaker and Coder](https://krasimirtsonev.com/)
- [Thinkdiff - Story telling by a computer programmer](https://thinkdiff.net/)
- [Martin Thoma](https://martin-thoma.com/)
- [Rick Brewster](https://blog.getpaint.net/) - Author of Paint.NET, popular open source C# app.
- [Oliver Marshall](https://olivermarshall.net/)
- [Joseph Scott](https://blog.josephscott.org/)
- [Tim Hopper - Machine Learning, Photography](https://tdhopper.com/)
- [Coding Alpha](https://www.codingalpha.com/) - Programming articles, codes and how-to tutorials for beginners.
- [Ircmaxell's blog](https://blog.ircmaxell.com/)
- [Bruce Eckel](https://www.bruceeckel.com/)
- [A Weird Imagination](https://aweirdimagination.net/)
- [Boutros AbiChedid](https://bacsoftwareconsulting.com/blog/index.php/about/)
- [Nick Basile](https://nick-basile.com/)

## Coding forums, weblogs and discussion sites

- [Stack Overflow](https://stackoverflow.com) - The bread and butter of most programmers.
- [Super User](https://superuser.com/) - Though not specific to programming, but very useful nevertheless.
- [Sitepoint Community Forums](https://www.sitepoint.com/community/) - An online community of web professionals, prides itself on being "the web's best resource" for web developers to keep up-to-date and learn JavaScript, CSS, UX, WordPress, PHP and more.
- [Freecodecamp forums](https://forum.freecodecamp.org/)
- [CodeRanch Forums](https://coderanch.com/forums/)
- [CodeProject Community Lounge](https://www.codeproject.com/Lounge.aspx)
- [Hackernoon contributors club](https://community.hackernoon.com/)
- [Github Community Discussions](https://github.com/community/community/discussions)
- [PHPFreaks - PHP discussion forum](https://forums.phpfreaks.com/)
- [Dev.to](https://dev.to) - More of a social media for coders, geared towards beginners.
- [Code Project](https://www.codeproject.com/) - If you are into C#/VB.NET, this site is for you.
- [GeeksForGeeks](https://www.geeksforgeeks.org/) - Yet another social coding and discussion site, quite reputed and popular in programming circles.
- [Hashnode](https://hashnode.com/) - Yet another discussion site where you can make blog posts, adding to the diverse geek culture.
- [Dzone](https://dzone.com/) - Yet another portal where coders can write articles and have discussions with other coders. They also provide you with [refcardz](https://dzone.com/refcardz) for programming languages and frameworks which are nothing but mind-blowing infographic PDFs to help you with learning and recall.
- [Hackr.io](https://hackr.io/blog) - Insightful articles by the Hackr programming and Design community.
- [CodePen Blog](https://blog.codepen.io/) - The co-founders of CodePen talk about the ins and outs of running a web software business.
- [A Technologists POV](https://medium.com/a-technologists-pov) - A Publication focused on software development and developing as a technology leader.
- [Better Programming](https://medium.com/better-programming) - Programming advice. They cover code tutorials, leadership and management, productivity and coffee.
- [Stack Abuse](https://stackabuse.com/) - News, articles, and ideas for software engineers and web developers.
- [Codrops](https://tympanus.net/codrops/) - Web design and development blog that publishes articles and tutorials about the latest web trends, techniques and new possibilities.

## Podcasts

- [Oxycast](https://oxylabs.io/resources/oxycast) - A tech podcast related to web scraping hosted by Oxylabs, a leading proxy solutions provider.
- [How I built this](https://www.npr.org/series/490248027/how-i-built-this) - As the name indicates, they bring together entrepreneurs, inventors, etc. who have created innovative and mind blowing things to discuss how these things came about. The podcast is intended for a general audience, not just technical people.
- [Thoughtworks Technology Podcast](https://open.spotify.com/show/6RBb4pGRgOFTmtCDSfTWvu) - Primarily a programming podcast.

## Vlogs/Youtube

- [Changelog](https://www.youtube.com/c/Changelog) - News and podcast for developers.
- [Python Bytes](https://www.youtube.com/c/PythonBytesPodcast) - Weekly podcast by Michael Kennedy and Brian Okken.
- [PHP Roundtable](https://www.youtube.com/c/PHPRoundtable) - A nerdy gathering of developers discussing topics that PHP nerds care about.
- [Traversy Media](https://www.youtube.com/c/TraversyMedia) - The best webdev and coding tutorials.
- [Free Code Camp](https://www.youtube.com/c/Freecodecamp) - Learn to code for free.
- [Edureka](https://www.youtube.com/c/edurekaIN) - Live and interactive e-learning platform.
- [Real Python](https://www.youtube.com/c/realpython) - Python tutorials and training videos.
- [Indie Hackers](https://www.youtube.com/channel/UC36zt_eM_gZQXayw_pAdASg) - Interviews of programmers who turned their side-projects into profitable businesses.
- [Jupiter Broadcasting](https://www.youtube.com/c/JupiterBroadcasting) - Tech podcast, content from different sources.

## MOOC (Massive Online Open Courses)

- [SoloLearn](https://www.sololearn.com/) - My personal favorite! They have a mind blowing quiz/gamified way of teaching programming and what's more, they provide free online/PDF certificates on successful completion too!
- [Free Code Camp](https://www.freecodecamp.org) - Fun and gamified way of learning web development.
- [Saylor Academy](https://learn.saylor.org) - Non profit Australian Academy offering various CS courses. Highly recommended!
- [Open2Study](https://www.open2study.com/courses) - Launched in April 2013 by a [collaboration of several Australian universities](http://www.thegoodmooc.com/2013/06/a-review-of-open2study.html). The number of programming specific courses is currently small, but should grow in future considering that they are more leaning towards career-oriented than core academic courses.
- [MIT Open Courseware](http://ocw.mit.edu/index.htm) - One of the best online resource to get learning content. However, you won't get any certificates on course completion.
- [Stanford Online](http://online.stanford.edu/about) - Another great university that provisions learning content through the online channel. Again, no certificates, but still great course content.
- [Coursera](https://www.coursera.org/courses?query=php) - Comprehensive curriculum and large number of programming courses to choose from. No free certificates though.
- [edX.org](https://courses.edx.org/) - Yet another MOOC. They used to offer free certificates until few years ago but no longer now.
- [Khan Academy - video lessons](https://www.khanacademy.org/computing/computer-programming/html-css/) - Good for learning *HTML/CSS* - both practice tests and video sessions.

## Puzzles, quizzes and riddles to exercise your coding muscles

- [Kattis](https://open.kattis.com/) - Keep solving coding problems and keep earning reputation points for you, your university and your country!
- [Project Euler](https://projecteuler.net/) - One of the "old-school", but interesting sites that features solving math problems through various levels. There is no code-evaluation, you just have to write your own code, come up with answers and post the answer to go to the next level.
- [Advent of code](https://adventofcode.com/) - Lots of programming problems for you to solve! A gamification approach which is fun and enjoyable. It is said that people abuse the hell out of languages to reach the top of leaderboard here. Requires a `Github`, `Reddit` or `Google` account to sign in.
- [CodingBat - python and java](https://codingbat.com/) - Coding puzzles and problems in *python* and *java*.
- [PySchools - python](https://www.pyschools.com/quiz/view_ranking) - Programming practice tests specific to *python*.
- [/r/dailyprogrammer](https://www.reddit.com/r/dailyprogrammer) - A programming puzzle a day keeps woes and dispair away. A subreddit where programming problems are posted and peer-reviewed every day.
- [/r/learnpython wiki](https://www.reddit.com/r/learnpython/wiki/index#wiki_practice_python) - Pointer to more *python* practice resources.
- [Code Wars](https://www.codewars.com/) - A must visit place for all programmers. The practice challenges are really addictive.
- [Paqmind](http://paqmind.com/) – An alternative approach to learning. Answer theoretical questions, solve challenges and compare your solutions with verified ones.

## Integrated Development Environments (IDE)

- [notepad++](https://notepad-plus-plus.org/): Less of an IDE and more of a code-editor to be honest but happens to be my favorite.
- [microsoft/vscode](https://github.com/microsoft/vscode): This is more like a glorified notepad++ but highly popular and currently trending. It runs a bit slower though due to it being written in JavaScript.
- [atom/atom](https://github.com/atom/atom): Similar to above, Atom is another JavaScript editor, quite popular these days.
- [Netbeans](https://netbeans.apache.org/): The conservative Java veteran's IDE! Unlike the above two, this one is a fully fledged IDE and supports advanced things like code refactoring and navigation.
- [Eclipse](https://eclipse.org): Another Java veteran's IDE, a strong competitor to Netbeans.

## Reddit Programming Help

- [Reddit Programming Help](http://www.reddit.com/r/learnprogramming) - A must-visit place for every programmer. You will definitely gain something from this site, whether its learning, tips, guidance or just the satisfaction of helping a fellow developer.
- [Programming Wiki](https://www.reddit.com/r/learnprogramming/wiki)
- [Wiki/Online resources](https://www.reddit.com/r/learnprogramming/wiki/index#wiki_online_resources)
- [Books/Offline resources](http://www.reddit.com/r/learnprogramming/wiki/books)

## Libraries and APIs

- [Octokit client libraries](https://developer.github.com/libraries/) - Octokit library is used to access the github API. This comes in multiple flavors and languages including .NET, Ruby and Java.

## Other Programming resources
- [Dictionary of Algorithms and Data Structure](http://xlinux.nist.gov/dads/) - Visit this site if you run out of ideas for program creation. Almost every algorithm invented by mankind can be found here.
- [Design Patterns Catalog](http://martinfowler.com/eaaCatalog/) - A collection of software design patterns and processes to follow, written by Martin Fowler, one of the best minds in the industry.
- [Great Github list of public datasets](http://www.datasciencecentral.com/profiles/blogs/great-github-list-of-public-data-sets?overrideMobileRedirect=1) - A great source of published data in case you are developing an app.
- [UPC Database](https://www.upcdatabase.com/itemform.asp) - The canonical place on web to lookup barcode items. An invaluable resource if you are developing a Barcode app.

repository: prahladyeri/CuratedLists

repo_name: prahladyeri/CuratedLists


text:
---
title: terraspace clean logs
reference: true
---

## Usage

    terraspace clean logs

## Description

Removes or truncate logs.

## Examples

Remove logs completely:

    $ terraspace clean logs
    Will remove all the log files in log/ folder
    Are you sure? (y/N) y
    Removing all files in log/
    Logs removed

Truncate logs. IE: Keeps the files but removes contents and zero bytes the files.

    $ terraspace clean logs --truncate
    Will truncate all the log files in log/ folder
    Are you sure? (y/N) y
    Logs truncated
    $

## Options

```
t, [--truncate], [--no-truncate]  # Truncate instead of remove logs
y, [--yes], [--no-yes]            # bypass are you sure prompt
```

repository: Grummfy/terraspace-docs

repo_name: Grummfy/terraspace-docs


text:
# charge2GO

**charge2GO** is a smart barter system for the exchange of charge between electric cars to reduce downtime.
This hack was developed during the [Hack.bangalore 2018](https://www.hackerearth.com/sprints/hackbengaluru/) held by Daimler - Mercedes.

# Current Problem

All electric vehicle owners suffer from *Range Anxiety*. Range Anxiety can be described as follows: you never know when you might run out of charge; and when you do, the nearest unoccupied charging station might be be unreachable/unavailable.

# Proposed Solution

What if every electric car on the road was a potential charging station? This way vehicle owners can obtain charge not only from other charging stations but also from stationary cars on the road. The donor (the owner of the vehicle willing to donate charge) gets an incentive based on the number of units of charge he/she donates.

# How to use the application

## Travel to destination

Right after the app launches, the user enters his name and the units of charge he has at the start of the journey. He can also select the type/model of car he is travelling in. Next, on the map, he chooses the destination location and starts his travel.

## Request for charge

Once his charge drops below a certain threshold value, a pop-up appears saying that he can request for charge. In the pop-up, he enters the units of charge he requires. This request message is then sent to all the neighbouring cars in a 4-mile radius.

## Respond to request for charge

If a car is within the 4-mile radius of the requesting car and has enough charge, a pop-up will appear on the donor's side showing him the location of the requesting car and the units of charge requested. Along with this, the max units of charge that he can donate is displayed in the pop-up. In this pop-up, the donor can enter the units of charge he is willing to donate - based on this, the credit points that he will receive on completing the *charge transaction* is shown to him.

## Travel to donor

Once the donor accepts the request, an OTP is sent to the requesting car. The requesting car travels to the location of the donor car, keys in the OTP and thus unlocks the hatch to gain access to the charging mechanism.

# Built With

* [Java](https://java.com/en/)
* [Android Studio](https://developer.android.com/index.html) Application development
* [Photoshop](www.adobe.com/Photoshop) creation of icons and images
* [Firebase](https://firebase.google.com) Database
* [Google Maps API](https://developers.google.com/maps)

# Team Members

* [Abhijeeth Padarthi](https://github.com/rkinabhi)
* [Arkoprabho Bhattacharjee](https://github.com/)
* [Aravind Subramaniam](https://github.com/aravind098)
* [Ayush Agrawal](https://github.com/ayush2098)

# License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details

gha_language: Java


text:
# Has One Relations:

```User``` model might be associated with one ```Profile```

```php
namespace App\Models;

use Artificertech\RelationshipEvents\Concerns\HasRelationshipEvents;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasRelationshipEvents;

    /**
     * Get the profile associated with the user.
     */
    public function profile()
    {
        return $this->hasOne(Profile::class)->withEvents();
    }
}
```

Now we can use methods to assosiate ```User``` with ```Profile``` and also update associated model.

```php
// ...
$user = factory(User::class)->create([
    'name' => 'John Smith',
]);

$user->profile()->create([
    'phone' => '8-800-123-45-67',
    'email' =><EMAIL_ADDRESS>    'address' => 'One Infinite Loop Cupertino, CA 95014',
]);
// ...
```

Now we should listen our events, for example we can register event listners in model's boot method:
```php
// ...
    protected static function boot()
    {
        parent::boot();

        static::hasOneCreating('profile', function ($user, $profile) {
            Log::info("Creating profile: {$profile->name} for user {$user->name}.");
        });

        static::hasOneCreated('profile', function ($user, $profile) {
            Log::info("Profile: {$profile->name} for user: {$user->name} has been created.");
        });

        static::hasOneSaving('profile', function ($user, $profile) {
            Log::info("Saving profile: {$profile->name} for user {$user->name}.");
        });

        static::hasOneSaved('profile', function ($user, $profile) {
            Log::info("Profile: {$profile->name} for user: {$user->name} has been saved.");
        });
    }
// ...
```

Dispatch Events with the event dispatcher
```php
// ...
    protected $dispatchesEvents = [
        'profileCreating' => UserProfileCreating::class,
        'profileCreated' => UserProfileCreated::class,
        'profileSaving' => UserProfileSaveing::class,
        'profileSaving' => UserProfileSaving::class,
    ];
// ...
```

Or you may use an Observer. Be sure to define the observable events in your model class - See [Detecting Observable Events](../README.md#detecting-observable-events)
```php
namespace App\Observer;

class UserObserver
{
    /**
     * Handle the User "profileCreating" event.
     *
     * @param \App\Models\User $user
     * @param \App\Models\Profile $profile
     *
     * @return void
     */
    public function profileCreating(User $user, Profile $profile)
    {
        Log::info("Creating profile: {$profile->name} for user {$user->name}.");
    }

    /**
     * Handle the User "profileCreated" event.
     *
     * @param \App\Models\User $user
     * @param \App\Models\Profile $profile
     *
     * @return void
     */
    public function profileCreated(User $user, Profile $profile)
    {
        Log::info("Profile: {$profile->name} for user: {$user->name} has been created.");
    }

    /**
     * Handle the User "profileSaving" event.
     *
     * @param \App\Models\User $user
     * @param \App\Models\Profile $profile
     *
     * @return void
     */
    public function profileSaving(User $user, Profile $profile)
    {
        Log::info("Saving profile: {$profile->name} for user {$user->name}.");
    }

    /**
     * Handle the User "profileSaved" event.
     *
     * @param \App\Models\User $user
     * @param \App\Models\Profile $profile
     *
     * @return void
     */
    public function profileSaved(User $user, Profile $profile)
    {
        Log::info("Profile: {$profile->name} for user: {$user->name} has been saved.");
    }
}
```

### Available methods and events

#### HasOne::create
- fires {relationship}Creating, {relationship}Created
- events have $parent and $related models

#### HasOne::save
- fires {relationship}Saving, {relationship}Saved
- events have $parent and $related models

gha_language: PHP


text:
# WeekShiftTradeMatchesSummaryResponse

## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**weekDate** | [**\DateTime**](\DateTime.md) | The schedule week date in yyyy-MM-dd format. Dates are represented as an ISO-8601 string. For example: yyyy-MM-dd | [optional]
**count** | **int** | The number of trades in the Matched state for the given week | [optional]

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

repository: jameBruno/platform-client-sdk-php

repo_name: jameBruno/platform-client-sdk-php


text:
# Vcd_python3

vcd_python is a compiled "C" program that scans VCD file and can call python routines.
Python code is usually called on any clock posedge or negedge and it can probe any net value in the hierarchy.

Complex patterns in VCD files can be easily found this way. Python has a long memory.

![vcd_python3](vcd_python3.svg)

## Vcd_python32

The new version of vcd_python is called vcd_python32 and it has additional feature to produce annotated VCD file.

![vcd_python32](vcd_python32.svg)

To accomplish annotation, vcd_python32 adds  force(Path,Value) routine. It can change any existing net value, but more importantly and usefull, it can modify value of any of couple of dozen artificial (added) busses. This makes it easy to correlate what python code prints out (like errors in original simulation) with what You see in the waves.

The output VCD file is called **traced.vcd**. Gtkwave is an excellent app to view the waveforms.

Vcd_python32 is free and downloadable from my GitHub repository (called vlsistuff with user name greenblat). It requires GCC or LLVM and some Linux/OS X hands-on experience on Your side.  You are welcome to ask me for help to compile and use it or suggestions to improve it.

Thanks, Ilia<EMAIL_ADDRESS>

repository: greenblat/vlsistuff

gha_language: Python

repo_name: greenblat/vlsistuff


text:
# Orc.WorkspaceManagement

[![Join the chat at https://gitter.im/WildGums/Orc.WorkspaceManagement](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/WildGums/Orc.WorkspaceManagement?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

![License](https://img.shields.io/github/license/wildgums/orc.workspacemanagement.svg)
![NuGet downloads](https://img.shields.io/nuget/dt/orc.workspacemanagement.svg)
![Version](https://img.shields.io/nuget/v/orc.workspacemanagement.svg)
![Pre-release version](https://img.shields.io/nuget/vpre/orc.workspacemanagement.svg)

Manage workspaces the easy way using this library.

# Quick introduction

Workspaces are a combination of settings that a user can choose to configure an application. An example is the layout of all docking windows in Visual Studio. The advantage of the workspace management is that it takes away all the plumbing and you can concentrate on the actual usage of workspaces.

The workspace management library makes it easy to manage workspaces. The main component is the *IWorkspaceManager* that contains the current workspace and all available workspaces and allows to load or save workspaces.

Below is an overview of the most important components:

- **IWorkspace** => the actual workspace object
- **IWorkspaceManager** => the workspace manager with events and management methods
- **IWorkspaceInitializer** => allows customization of initial settings of a workspace

![Managing workspaces the easy way](doc/images/workspace_handling.gif)

--

**Important note**

The base directory will be used as repository. This means that it cannot contain other files and all other files will be deleted from the directory

--

# Creating a workspace initializer

When a workspace manager is created, it doesn't contain anything. The *IWorkspaceInitializer* interface allows the customization of that state.

By default the following initializers are available:

* **EmptyWorkspaceInitializer** => initializes nothing, this is the default

To create a custom workspace initializer, see the example below:

    public class WorkspaceInitializer : IWorkspaceInitializer
    {
        public void Initialize(IWorkspace workspace)
        {
            workspace.SetValue("AView.Width", 200d);
            workspace.SetValue("BView.Width", 200d);
        }
    }

Next it can be registered in the ServiceLocator (so it will automatically be injected into the *WorkspaceManager*):

	ServiceLocator.Default.RegisterType<IWorkspaceInitializer, MyWorkspaceInitializer>();

**Make sure to register the service before instantiating the *IWorkspaceManager* because it will be injected**

# Initializing the workspace manager

Because the workspace manager is using async, the initialization is a separate method. This gives the developer the option to load the workspaces whenever it is required. To read the stored workspaces from disk, use the code below:

	await workspaceManager.Initialize();

# Retrieving a list of all workspaces

    var workspaces = workspaceManager.Workspaces;

# Retrieving the current workspace

The library contains extension methods for the *IWorkspaceManager* to retrieve a typed instance:

	var myWorkspace = workspaceManager.Workspace;

To customize the location where the workspaces are stored, use the *BaseDirectory* property.

# Storing information in a workspace

Storing information in a workspace is the responsibility of every single component in the application. The *IWorkspaceManager* will raise the *WorkspaceInfoRequested* event so every component can put in the required information into the workspace.

To store information in a workspace, set the workspace to be updated as current workspace. Then let the user (or software) customize all components. Call the following method to raise the *WorkspaceInfoRequested* event to update the workspace:

    workspaceManager.StoreWorkspace();

**Note that a workspace is only updated, not saved to disk by this method**.

## Providers

Create a provider as shown in the example below:

    public class RibbonWorkspaceProvider : IWorkspaceProvider
    {
        private readonly Ribbon _ribbon;

        public RibbonWorkspaceProvider(Ribbon ribbon)
        {
            Argument.IsNotNull(() => ribbon);

            _ribbon = ribbon;
        }

        public void ProvideInformation(IWorkspace workspace)
        {
            workspace.SetWorkspaceValue("Ribbon.IsMinimized", _ribbon.IsMinimized);
        }

        public void ApplyWorkspace(IWorkspace workspace)
        {
            _ribbon.IsMinimized = workspace.GetWorkspaceValue("Ribbon.IsMinimized", false);
        }
    }

Then add it to the provider where the ribbon is available:

    public RibbonView()
    {
        InitializeComponent();

        var dependencyResolver = this.GetDependencyResolver();
        var workspaceManager = dependencyResolver.Resolve<IWorkspaceManager>();

        var ribbonWorkspaceProvider = new RibbonWorkspaceProvider(ribbon);
        workspaceManager.AddProvider(ribbonWorkspaceProvider, true);
    }

## Events

Using events is a bit more work, but can accomplish the same:

        public MyComponent(IWorkspaceManager workspaceManager)
        {
            workspaceManager.WorkspaceInfoRequested += OnWorkspaceInfoRequested;
        }

        private void OnWorkspaceInfoRequested(object sender, WorkspaceEventArgs e)
        {
            var workspace = e.Workspace;

            workspace.SetWorkspaceValue("somekey", "somevalue");
        }

**Note that this will only be called when storing the workspace, restoring the workspace needs more events**

# Saving all workspaces to disk

To save all workspaces to disk, use the code below:

    await workspaceManager.Save();

--

# Using the XAML behaviors

For the developers using XAML (WPF), behaviors and extension methods are available in the *Orc.WorkspaceManagement.Xaml* library.

## Using the extension methods

Using the extension methods still requires manual work by subscribing to events of both the view and workspace manager, but allow more control.

## Using the behaviors

The behavior is a wrapper around the extension methods and take away to need to manage anything. The behavior is aware of all the events and will handle everything accordingly. To use the behavior, use the code below:

    <views:BView Grid.Row="2" Grid.Column="4">
        <i:Interaction.Behaviors>
            <behaviors:AutoWorkspace />
        </i:Interaction.Behaviors>
    </views:BView>


text:
# Startpage
[![Build Status](https://travis-ci.org/Vincevrp/Startpage.svg?branch=master)](https://travis-ci.org/Vincevrp/Startpage)
[![GitHub license](https://img.shields.io/github/license/Vincevrp/Startpage.svg)](https://github.com/Vincevrp/Startpage/blob/master/LICENSE)

Inspired by and forked from [Tilde](https://www.reddit.com/r/startpages). Colorscheme based on [Nord](https://github.com/arcticicestudio/nord).

![Screenshot](https://raw.githubusercontent.com/Vincevrp/Startpage/master/SCREENSHOT.png)

## Build

You can build this project using the following commands:

```shell
# Run inside of the cloned repository
npm install

# Build
npm run build
```

Output can be found in the build/ directory.

## Usage

To go to a site, enter the corresponding key. To view the available sites and their keys, press `?`. If your input doesn't match any of the commands, a generic Google search will be triggered. For example:

* Entering `r` would redirect you to [www.reddit.com](https://www.reddit.com).
* Entering `t` would redirect you to [twitter.com](https://twitter.com).
* Entering `cats` would search [Google for cats](https://encrypted.google.com/search?q=cats).

On mobile, you can click the clock to focus the search input.

### Searching

You can search any of the sites by typing a colon after the site's key, followed by your search query. For example:

* Entering `g:tilde` would search [GitHub for tilde](https://github.com/search?q=tilde).
* Entering `s:radiohead` would search [SoundCloud for radiohead](https://soundcloud.com/search?q=radiohead).

### Specific Locations

You can go to a specific location on a site by typing a forward slash after the site's key, followed by the location on the site you'd like to be redirected to. For example:

* Entering `r/r/startpages` would redirect you to [www.reddit.com/r/startpages](https://www.reddit.com/r/startpages).

### URL Redirects

If you enter in a full domain or URL, you will be redirected to said domain or URL. For example:

* Entering `stallman.org` would redirect you to [stallman.org](https://stallman.org/).
* Entering `https://smile.amazon.com` would redirect you to [smile.amazon.com](https://smile.amazon.com/).

## Configuration

Core configuration can be changed in `scripts/config.js`. Style is changed in the `sass/style.scss` file. Make sure to rebuild after making changes.

## License

Feel free to use this and modify it however you like.

repository: Vincevrp/Startpage

repo_name: Vincevrp/Startpage


text:
# gaia-i18n-part-1
Gaia, a custom JavaScript i18n library for the browser, built for a companion
PhraseApp blog article.

## Installation
- Clone this repo
- Run `yarn` or `npm install` from the command line at the project's root directory
- Run `yarn start` or `npm start` to start the development server
- Open [http://localhost:3000](http://localhost:3000) in your browser

## Resources
For i18n / l10n Development Tutorials and more, see the
[PhraseApp blog](https://phraseapp.com/blog/).

Gaia was developed inside a React app testbed. This project was spun up using
[Create React App](https://github.com/facebook/create-react-app). Learn more
about React at its [official website](https://reactjs.org/).


text:
# Slush Static-html

## Getting Started

Install `slush-static-html` globally:

```bash
$ npm install -g slush-static-html
```

### Usage

Create a new folder for your project:

```bash
$ mkdir my-slush-static-html
```

Run the generator from within the new folder:

```bash
$ cd my-slush-static-html && slush static-html
```

repository: sweatsuit/slush-static-html

repo_name: sweatsuit/slush-static-html


text:
# ReasonML/ES2077 - ReactConf Dev

mdx-deck presentation.

Components were done in Reason and JS to demo interop.

### References

https://reasonml.chat

https://khoanguyen.me/reasonml-toolchain/

https://medium.com/astrocoders/render-props-composition-for-reasonml-is-here-b9c004ca9fcb

https://github.com/astrocoders/lenses-ppx

https://github.com/revery-ui/revery

https://github.com/Schniz/fnm/

https://github.com/andreas/ocaml-graphql-server

https://reasonml.github.io/reason-react/

https://reasonml.github.io

https://github.com/mhallin/graphql_ppx

gha_language: Reason


text:
## Carousel component props

* ```value: Number```: Current slide's index (zero based, depends on the elements order).

* ```onChange: Function```: Handler triggered when current slide is about to change (e.g. on arrow click or on swipe).

* ```slides: Array``` Alternative way to pass slides. This prop expects an array of JSX \<img\> elements.

* ```slidesPerPage: Number```: Number of slides visible at once.

* ```slidesPerScroll: Number```: Number by which value will change on scroll (autoPlay, arrow click, drag).

* ```stickyEdges: Boolean```: Indicating if the carousel should stick the first and last slides to the edges or not.

* ```itemWidth: Number```: Determines custom width for every slide in the carousel.

* ```offset: Number```: Padding between items.

* ```arrows: Boolean```: Renders default arrows.

* ```arrowLeft: React element```, ```arrowRight: React element```: React elements to be used instead of default arrows (if you provide these custom arrows, you don't have to use ```arrows``` prop).

* ```addArrowClickHandler: Boolean``` Has to be added for arrowLeft and arrowRight to work.

* ```autoPlay: Number```: Slide change interval in milliseconds.

* ```stopAutoPlayOnHover: Boolean```: Determines if autoPlay should stop when mouse hover over carousel.

* ```clickToChange: Boolean``` Clicking on a slide changes current slide to the clicked one.

* ```centered: Boolean``` Alignes active slide to the center of the carousel.

* ```infinite: Boolean``` Creates an infinite carousel width.

* ```draggable: Boolean``` Makes it possible to drag to the next slide with mouse cursor.

* ```keepDirectionWhenDragging: Boolean``` While dragging, it doesn't matter which slide is the nearest one, but in what direction you dragged.

* ```animationSpeed: Number``` Determines transition duration in milliseconds.

* ```dots: Boolean``` Renders default dots under the carousel.

* ```minDraggableOffset: Number``` Defines the minimum offset to consider the drag gesture

* ```lazyLoad: Boolean``` Initially, it loads only the closest next / previous slide to the current one based on the value of the slidesPerPage variable. Other slides are loaded as needed.

* ```lazyLoader: React node``` To be used instead of the default loader

* ```onInit: Function``` Callback thrown after the carousel is loaded

## Default Properties:

- ```offset: 0```
- ```slidesPerPage: 1```
- ```slidesPerScroll: 1```
- ```stickyEdges: false```
- ```animationSpeed: 500```
- ```draggable: true```
- ```minDraggableOffset: 10```


text:
# Meshech

## Facts:

Meshech is the name of two men in the Old Testament.

* One Meshech was a son of Japheth.
* The other Meshech was a grandson of Shem.
* Meshech was also the name of a region of land, which was probably named after one of these men.
* The region of Meshech may have been located in part of what is now the country of Turkey.

(Translation suggestions: [How to Translate Names](../../translate/translate-names))

(See also: [Japheth](../names/japheth.md), [Noah](../names/noah.md), [Shem](../names/shem.md))

## Bible References:

* [1 Chronicles 1:5-7](rc://en/tn/help/1ch/01/05)
* [Ezekiel 27:12-13](rc://en/tn/help/ezk/27/12)
* [Genesis 10:2-5](rc://en/tn/help/gen/10/02)
* [Psalms 120:5](rc://en/tn/help/psa/120/05)

## Word Data:

* Strong’s: [[H4851]], [[H4902]]

repository: mandolyte/uw-obsidian

branch_name: refs/heads/main

repo_name: mandolyte/uw-obsidian


text:
# Experiments

Experiments are another way to toggle features in the TweetDeck source code. They are either entirely hardcoded or pulled from the TweetDeck API. Recent ones seem to be hardcoded.

Experiments could have been "prototypes" of what became [deciders](./deciders.md), each experiment key has an ID at the end, these could might internal issues/PR numbers.

## Location

The experiments are stored somewhere in `TD.controller.stats`. You can check for the value of an experiment with executing
`TD.controller.stats.getExperimentBucket("experiment_key")` in your console.

To find all experiments used, you have to search through the bundled source code.

Here are all experiments in the source code as of writing (1.4.2017)

| Key                                      | Value                            | Description                        |
|------------------------------------------|----------------------------------|------------------------------------|
| `tweetdeck_notifications_streaming_5807` | `no_streaming`                   | Disables streaming                 |
| `tweetdeck_simplified_search_flow_5499`  | `no_temp_editable_header_search` | Open new columns for search        |
| `tweetdeck_editable_search_headers_5431` | `editable_search_headers`        | Editable search headers            |
| `tweetdeck_engagement_icons_3569`        | - (already implemented)          | Tweet actions are slightly hidden  |
| `thamshere_test_3281`                    | -                                | Test                               |

## Overriding Experiments

This is a bit tricky, for whatever reason you have to pass all experiments at once when overriding one of them, if you don't do that, all other experiments will be gone.

You can set a experiment the following way:

```js
TD.controller.stats.setExperiments({
    config: {
        experiment_key: {
            value: 'experiment_value'
        }
    }
});
```

You can disable an experiment by passing an object with all the experiments but the one you want to disable. If you don't pass everything, all non-supplied experiments will have their value set to `''`, be warned!.

## Notice

As for every feature toggle, you have to do this as soon as `TD` gets available, so templates are not broken or other side effects may occur. Some of the experiments might work if changed later on.

repository: DeckHack/discoveries

repo_name: DeckHack/discoveries


text:
[![Apache Sling](https://sling.apache.org/res/logos/sling.png)](https://sling.apache.org)

 [![Build Status](https://ci-builds.apache.org/job/Sling/job/modules/job/sling-ide-tooling/job/master/badge/icon)](https://ci-builds.apache.org/job/Sling/job/modules/job/sling-ide-tooling/job/master/) [![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=apache_sling-ide-tooling&metric=alert_status)](https://sonarcloud.io/dashboard?id=apache_sling-ide-tooling) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)

# Apache Sling IDE Tooling

This module is part of the [Apache Sling](https://sling.apache.org) project.

For using the IDE tooling, please see the [Sling IDE Tooling](https://sling.apache.org/documentation/development/ide-tooling.html)
documentation page.

## Repository structure

The modules are split into distinct sub-trees

* shared
* cli
* eclipse

to ensure that the reusable code is available for usage in other IDEs or
environments.

The modules placed under `shared/modules` should bring as few external dependencies as
possible, and must not depend on IDE-specific APIs, such as Eclipse or OSGi. However,
all modules come with OSGi bundle headers and provide even some OSGi DS components.

The modules placed under `eclipse` may depend on any Eclipse-specific APIs.

To make the shared modules consumable by the Maven + Tycho toolchain, a separate
`shared/p2` sub-tree contains a Maven + Tycho build which creates a p2 update
site. That update site in turn is consumed by the `eclipse` build.

## Building the Sling IDE Tooling for Eclipse

This howto assumes that you are running Eclipse Oxygen or later with the Plug-In
Development Environment and Maven features installed. You should have
previously built the projects using

    ./build.sh

to ensure that Maven artifacts which are not available on p2 update sites are
included in the workspace.

To start with, import all the projects in Eclipse as Maven projects. Eclipse
might prompt you to install an additional m2eclipse configurator for PDE
projects, as it's needed for bridging between Maven and PDE projects.

After the projects are imported, you need to set your target environment to
ensure that all dependencies are met and that you are working against the
project's declared baseline. To do that, open the following file in Eclipse

    target-definition/org.apache.sling.ide.target-definition-dev.target

In the target editor which appears, click 'Set as Target Platform'. Once
the target platform is set up, you can create a new launch configuration.

  NOTE: if you don't see a target editor, but an XML editor, try right-clicking
  on the file and choosing File -> Open With -> Target Editor. If you don't
  see that option, you don't have PDE installed.

Now you can use the 'Sling IDE Tooling' launch configuration which is present
in the org.apache.sling.ide.target-definition project to launch a local instance
of Eclipse with Sling IDE Tooling plug-ins picked up from the local workspace.

Due to the unclear future of https://github.com/tesla/m2eclipse-tycho (compare with https://github.com/eclipse-m2e/m2e-core/issues/605)
for the time being the pom.xml configuration is duplicated in the project settings (which is checked in)

repository: apache/sling-ide-tooling

repo_name: apache/sling-ide-tooling