Skip to content

Commit

Permalink
Squashed #1 (v1.2) documentation edits to v18
Browse files Browse the repository at this point in the history
commit 20d0545
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 18:49:27 2022 +0100

    Add rule IDs to 0104.

commit 345c12f
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 16:15:13 2022 +0100

    Wording tweaks.

commit 337387b
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 16:09:55 2022 +0100

    Add modified dimension default exclusion.

commit ec220de
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 16:07:50 2022 +0100

    Rule spec for 0104

commit 08dbf00
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 13:31:34 2022 +0100

    Fundamental Accounting Relationships => Accounting Relationships

commit 368f5a2
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 13:24:21 2022 +0100

    Remove reference to dimensional aggregation.

commit 0a10a1a
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 13:19:50 2022 +0100

    Minor re-wording.

commit e43b887
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 13:18:15 2022 +0100

    Rule specification for rule 102.

commit 385ccd1
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 12:37:03 2022 +0100

    Fix title.

commit 1630f56
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 12:36:19 2022 +0100

    Add stub README, fix title.

commit 736a0ef
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 12:34:23 2022 +0100

    Remove symlink as it results in broken relative URLs.

commit 9a620ec
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 12:31:36 2022 +0100

    Rule spec for rule 0101

commit ae1ddf4
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 11:46:38 2022 +0100

    Renaming for consistency.

commit 233b1aa
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 11:43:36 2022 +0100

    Clarify rule title.

commit 14ac2df
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 11:43:27 2022 +0100

    Tweak for consistency.

commit a589252
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 11:43:11 2022 +0100

    Additional definitions.

commit d03a7d5
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Thu May 5 11:42:44 2022 +0100

    Rule spec for DQC_0093.

commit 0130a30
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 21:36:19 2022 +0100

    Rename for consistency.

commit 3ee7b2a
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 21:31:29 2022 +0100

    Rewording of DQC0092.

commit fbddae2
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 17:20:48 2022 +0100

    DQC_0092 rule specification.

commit 61aaf24
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 17:20:17 2022 +0100

    Fix incorrect term reference.

commit ae6a066
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 16:54:22 2022 +0100

    Add rule spec for 0080.

commit 5f20b55
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 16:34:02 2022 +0100

    Fix typo.

commit b61e72d
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 15:37:24 2022 +0100

    Add rule specification for 0041.

commit c44ae35
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 15:36:51 2022 +0100

    Clarify that ELR is ignored when checking calc reversals.

commit 0a6de3a
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 15:14:39 2022 +0100

    Revert "report taxonomy" to "extension taxonomy"

commit 5097dc7
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 15:04:45 2022 +0100

    Further language updates.

commit 7363f00
Author: Paul Warren <pdw@ex-parrot.com>
Date:   Wed May 4 14:53:39 2022 +0100

    First draft of rule language formalisation.
  • Loading branch information
davidtauriello committed May 9, 2022
1 parent a8bc1ca commit 76f7f36
Show file tree
Hide file tree
Showing 10 changed files with 307 additions and 57 deletions.
38 changes: 31 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Data Quality Committee Rules &amp; Guidance
# ESEF Data Quality Rules & Guidance

The following automated checks have been drawn from experience with IFRS filings to the SEC and form the initial XBRL International Data Quality Rules in the Beta Release. To review human-readable versions of the validations in this release, click any of the files linked in the "Number" column below.
The following automated checks have been drawn from experience with IFRS filings to the SEC and form the initial XBRL International Data Quality Rules in the Beta Release.

These freely-available automated checks are written in an [open-source processing language (XULE)](https://xbrl.us/home/use/what-is-xule) that is used for XBRL business rules, rendering, and data collection activities. The open source [XULE engine and ESEF plugin](https://github.com/xbrlus/xule/releases/latest) works with the [Arelle](https://arelle.org/pub) processor, and works with the ruleset.zip files maintained here on ESEF filings.
The specification of the current ESEF DQR rules can be found below:

| Number | Short name | Rule version |
| ----- | ----- | ----- |
| [DQC_IFRS_0008](docs/DQC_IFRS_0008/DQC_0008.md) | Reversed calculation | 17 |
| [DQC_IFRS_0041](docs/DQC_IFRS_0041/DQC_0041.md) | Axis with a default member that differs from the IFRS Taxonomy | 17 |
| [DQC_IFRS_0080](docs/DQC_IFRS_0080/DQC_0080.md) | Negative Values | 17 |
| [DQC_IFRS_0092](docs/DQC_IFRS_0092/DQC_0092.md) | Non Positive Items | 17 |
| [DQC_IFRS_0080](docs/DQC_IFRS_0080/DQC_0080.md) | IFRS Non-Negative Items | 17 |
| [DQC_IFRS_0092](docs/DQC_IFRS_0092/DQC_0092.md) | IFRS Non-Positive Items | 17 |
| [DQC_IFRS_0093](docs/DQC_IFRS_0093/DQC_0093.md) | Durational Aggregation | 17 |
| [DQC_IFRS_0101](docs/DQC_IFRS_0101/DQC_0101.md) | Movement of Concepts between Calculation Trees | 17 |
| [DQC_IFRS_0102](docs/DQC_IFRS_0102/DQC_0102.md) | Element Values Are Equal | 17 |
| [DQC_IFRS_0101](docs/DQC_IFRS_0101/DQC_0101.md) | Misapplication of Concepts between Investing, Financing and Operating Activities | 17 |
| [DQC_IFRS_0102](docs/DQC_IFRS_0102/DQC_0102.md) | Accounting Relationships| 17 |
| [DQC_IFRS_0103](docs/DQC_IFRS_0103/DQC_0103.md) | Invalid Value for Percentage Items | 17 |
| [DQC_IFRS_0104](docs/DQC_IFRS_0104/DQC_0104.md) | Axis with Inappropriate Members | 17 |
| [DQC_IFRS_0105](docs/DQC_IFRS_0105/DQC_0105.md) | FS with No Associated Calculation | 17 |
Expand All @@ -25,6 +25,30 @@ These freely-available automated checks are written in an [open-source processin
| [DQC_IFRS_0130](docs/DQC_IFRS_0130/DQC_0130.md) | Earnings Per Share Calculation | 17 |
| [DQC_IFRS_0138](docs/DQC_IFRS_0138/DQC_0138.md) | Missing Abstract from Financial Statements | 17 |

## Documentation definitions

The rules definitions make reference to the following terms:

* The **extension taxonomy** is the DTS of XBRL Report against which the rules are being evaluated.
* The **base taxonomy** is the IFRS taxonomy corresponding to the ruleset version. The entry point used for each ruleset is shown below.
* **Monetary** concepts are concepts with a datatype of, or derived from, `xbrli:monetaryItemType`.
* A set of facts are **dimensionally aligned** if they share the same value for all [dimensions](https://www.xbrl.org/Specification/oim/REC-2021-10-13/oim-REC-2021-10-13.html#term-dimension). Note that this definition refers to the [OIM](https://www.xbrl.org/Specification/oim/REC-2021-10-13/oim-REC-2021-10-13.html) definition of dimension, and so includes the core dimensions such as period and unit, as well as taxonomy-defined dimensions.

## IFRS Entry Points

The following entry points define the _base taxonomy_ for each version of the ruleset:

| Version | Entry point |
| ------- | ----------- |
| ESEF DQR 2019 | `http://xbrl.ifrs.org/taxonomy/2019-03-27/full_ifrs_entry_point_2019-03-27.xsd` |
| ESEF DQR 2020 | `http://xbrl.ifrs.org/taxonomy/2020-03-16/full_ifrs_entry_point_2020-03-16.xsd` |
| ESEF DQR 2021 | `http://xbrl.ifrs.org/taxonomy/2021-03-24/full_ifrs_entry_point_2021-03-24.xsd` |

## Reference implementation

A reference implementation of the ESEF DQR rules is also available. The reference implementation is defined using the [XULE language](https://xbrl.us/home/use/what-is-xule) developed by XBRL US. The language is free to use, and an open source [XULE engine](https://github.com/xbrlus/xule/releases/latest) is available for the [Arelle](https://arelle.org/pub) XBRL processor.


© Copyright 2015 - 2022 XBRL US, Inc. All rights reserved.
See [License](https://xbrl.us/dqc-license) for license information.
See [Patent Notice](https://xbrl.us/dqc-patent) for patent infringement notice.
12 changes: 9 additions & 3 deletions docs/DQC_IFRS_0008/DQC_0008.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
# Reversed Calculation
Rule ID: DQC_0008

## Rule function
## Rule description

This rule evaluates whether a calculation relationship in the company's extension is a reversal of the calculation defined in the base taxonomy used for the filing. The rule checks if the element representing the calculation total and the element representing the component are a reversal of those same elements defined in the base taxonomy with the same calculation weight.
This rule evaluates whether a calculation relationship in the _extension taxonomy_ is a reversal of the calculation defined in the base taxonomy used for the filing. Where a concept appears as a contributing item to a total in the _base taxonomy_, the concept representing the total cannot appear as a contributing item to that concept in the _extension taxonomy_, unless the calculation weight is reversed.

This rule only compares the defined relationship between two elements joined by a single calculation arc in a company's calculation relationship and checks if the opposite of that relationship exists in the base taxonomy. Both elements in the calculation relationship must have a balance attribute of either debit or credit.
Note that this rule only checks for direct relationships between concepts, not all ancestors and descendents.

## Problem solved by the rule

Users expect that the calculation relationships defined between elements in the base taxonomy can be used to identify the meaning of an element. For example when reporting using the IFRS Taxonomy, Mining Assets is a component of Property Plant and Equipment as Property Plant and Equipment is comprised of Mining Assets, Land Buildings etc.

However, if the company changed the calculation relationship so that Property Plant and Equipment was a component of Mining Assets then a user of the data will have a different meaning of the concept of that reported by the preparer.

## Rule specification

For each `summation-item` relationship defined in the _extension taxonomy_ from a source concept **S** to a target concept **T** with calculation weight **W** there MUST NOT exist a `summation-item` relationship in the _base taxonomy_ with a source concept of **T** and a calculation weight of **W**.

Note that the extended link role of the relationship is ignored when performing this test.

## Example rule message
(Note: Presentation style of rule messages may differ among software implementations of the rules.)

Expand Down
11 changes: 8 additions & 3 deletions docs/DQC_IFRS_0041/DQC_0041.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
# Axis with a Default Member that Differs from the Base Taxonomy  

## Rule function
This rule evaluates whether the dimension default is associated with a given axis in the company's extension taxonomy. Companies should not change the default member defined in the base taxonomy for a given axis in their extension taxonomy.
## Rule description

When using an IFRS taxonomy, the axis ContinuingAndDiscontinuedOperationsAxis is not checked to determine if the default domain was changed.<a href="#1"><sup>1</sup></a>
This rule evaluates whether the dimension default for an axis in the _extension taxonomy_ is the same as the default for that axis in the _base taxonomy_. Companies should not change the default member defined in the _base taxonomy_ for a given axis in their _extension taxonomy_.

## Problem solved by the rule

Users of the data do not expect that the default member will be changed and assume that any value reported with an axis has the same default member across all filers.  For example, if a company reports a value of Revenues with no dimensions it is assumed that this represents revenues of the consolidated entity.  However, if the company changed the default member of the Legal Entity axis to the parent company member then every value without a dimension would represent the parent company and not the revenue of the consolidated entity.  

## Rule specification

For each `dimension-default` relationship **E** in the _extension taxonomy_, if a `dimension-default` relationship **B** exists in the _base taxonomy_ with the same dimension as its source, then **E** MUST have the same target as **B**.

## Example rule message

The dimension default defined for the axis in the base taxonomy should not be changed in a company extension taxonomy. The default for the ClassesOfPropertyPlantAndEquipmentAxis in the base taxonomy is DebtInstrumentNameDomain, but the default has been replaced with PropertyPlantAndEquipmentMember.

Rule version: 16.0
Expand Down
23 changes: 20 additions & 3 deletions docs/DQC_IFRS_0080/DQC_0080.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Negative Values
# IFRS Non-Negative Items

## Rule function
## Rule description
The IFRS Taxonomy is designed so that the majority of elements have a positive value. This rule tests whether the values for a given list of elements are negative. The rule does not test elements when a specified member is present which would allow the value to be negative.

See file [DQC_0080_ListOfElements.xlsx](DQC_0080_ListOfElements.xlsx?raw=true) which provides a list of elements that should not be negative. The rule tests whether these elements have a negative value in an XBRL document.
Expand All @@ -10,11 +10,28 @@ See file [DQC_0080_MemberExclusions.xlsx](DQC_0080_MemberExclusions.xlsx?raw=tru
## Authoritative reference
The IFRS taxonomy is designed for the majority of elements to have a positive value, so that the value reported in the XBRL document represents the correct balance type for the element (e.g., debit balance type for assets and expenses and losses or credit balance type for liabilities and income and gains). If the value reported in the HTML document is shown with parentheses, the value reported in the XBRL document should still be positive, other than as described in the following sentence. In some limited cases, if the value also has a specified member associated with it, the value may be negative (e.g., when an element is used for an adjustment or elimination, the value may need to be negative).

If the value reported in the HTML document is shown in parenthesis (e.g., interest expense or loss on disposition of assets), you may use a negated label to present the value in parenthesis in the SEC Interactive Data viewer without changing the positive value reported in the XBRL document. The value reported in the XBRL document (e.g., interest expense or loss on disposition of assets) should be the same as the value reported in the HTML document, even though the value in the HTML document is shown in parenthesis. Therefore, it is an error to change the value reported in the XBRL document to a negative solely because the value reported in the HTML document is shown in parenthesis.
If the value reported in the HTML document is shown in parentheses (e.g., interest expense or loss on disposition of assets), you may use a negated label to present the value in parenthesis in the SEC Interactive Data viewer without changing the positive value reported in the XBRL document. The value reported in the XBRL document (e.g., interest expense or loss on disposition of assets) should be the same as the value reported in the HTML document, even though the value in the HTML document is shown in parenthesis. Therefore, it is an error to change the value reported in the XBRL document to a negative solely because the value reported in the HTML document is shown in parenthesis.

## Problem solved by the rule
Filers continue to have incorrect negative amounts in files, which is inconsistent with the balance types and definitions of the elements used and the structure of the IFRS Taxonomy. Incorrect values in a filing makes it difficult or impossible to use that data for automated analysis.

## Rule specification

Let **non-negative concepts** be the set concepts defined in columns J and K of [DQC_0080_ListOfElements.xlsx](DQC_0080_ListOfElements.xlsx?raw=true).

Let **sub-string exclusions** be the set of strings defined in column J of [DQC_0080_MemberExclusions.xlsx](DQC_0080_MemberExclusions.xlsx?raw=true) where the value of column G is "Member element name contains the text (Case insensitive)".

Let **excluded axes** be the set of axes defined in column J of [DQC_0080_MemberExclusions.xlsx](DQC_0080_MemberExclusions.xlsx?raw=true) where the value of column G is "Axis equals" and column K is empty.

Let **excluded axis/member pairs** be the set of axis/member pairs, defined in columns J, M and N of [DQC_0080_MemberExclusions.xlsx](DQC_0080_MemberExclusions.xlsx?raw=true) where the value of column G is "Axis equals" and column K is "AND member equals".

If a fact in the report has a concept in **non-negative concepts** then its value MUST NOT be negative unless:

* the fact has a dimension with a non-default value that is in the set of **excluded axis/member pairs**; or
* the fact has a dimension and member that is in the set of **excluded axes**; or
* any string in **sub-string exclusions** is a case-insensitive substring of the local name of any non-default dimension member applied to the fact.


## Example rule message<a href="#1"><sup>1</sup></a>
An example of the general rule message is shown below.

Expand Down
85 changes: 72 additions & 13 deletions docs/DQC_IFRS_0092/DQC_0092.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,82 @@
# IFRS Non Positive Items
# IFRS Non-Positive Items

## Rule function
This rule identifies where filers have used a positive value for an item that should be negative. The rule consists of two sub components. The first checks that values using the EliminationOfIntersegmentAmountsMember have a negative value. The second checks that certain elements used with the Carrying Amount Accumulated Depreciation Amortisation And Impairment And Gross Carrying Amount Axis and Accumulated depreciation members always have a negative value.
## Rule description

**Part 1.**
The first rule takes the list of non negative items used in rule DQC.IFRS.0080 and checks that any values reported for these elements and the SegmentConsolidationItemsAxis = EliminationOfIntersegmentAmountsMember is always a negative number. It excludes those facts that have additional dimensions and members that are known to flip the sign of a value. This list of axis members and axis member combinations is the same list that is used for the non neg rule DQC.IFRS.0080.
This rule identifies where reports include a positive value for an item that should be negative. The rule consists of two sub components: The first checks that values using the Elimination Of Intersegment Amounts Member have a negative value. The second checks that certain assset-related elements used with the Carrying Amount Accumulated Depreciation Amortisation And Impairment And Gross Carrying Amount Axis and Accumulated Depreciation Members always have a negative value.

**Part 2.**
The second rule takes a list of asset related elements and checks that any values reported for these elements and the axis CarryingAmountAccumulatedDepreciationAmortisationAndImpairmentAndGrossCarryingAmountAxis used with any of the following members is always negative:

1. AccumulatedImpairmentMember
1. AccumulatedDepreciationAmortisationAndImpairmentMember
1. AccumulatedDepreciationAndAmortisationMember

This rule also excludes those facts that have additional dimensions and members that are known to flip the sign of a value. This list of axis members and axis member combinations is the same list that is used for the non neg rule DQC.IFRS.0080.

## Problem solved by the rule
The intent of the rule is to identify those facts that have been entered with a positive value when the value in fact should have been a negative amount.

## Rule description

### Part 1

Let **non-positive excluded axis/member pairs** be the following set of axis/member combinations:

* CarryingAmountAccumulatedDepreciationAmortisationAndImpairmentAndGrossCarryingAmountAxis
* AccumulatedImpairmentMember
* AccumulatedDepreciationAmortisationAndImpairmentMember
* AccumulatedDepreciationAndAmortisationMember
* RetrospectiveApplicationAndRetrospectiveRestatementAxis
* IncreaseDecreaseDueToChangesInAccountingPolicyAndCorrectionsOfPriorPeriodErrorsMember
* FinancialEffectOfChangesInAccountingPolicyMember
* IncreaseDecreaseDueToChangesInAccountingPolicyRequiredByIFRSsMember
* IncreaseDecreaseDueToVoluntaryChangesInAccountingPolicyMember
* FinancialEffectOfCorrectionsOfAccountingErrorsMember
* FinancialEffectOfTransitionFromPreviousGAAPToIFRSsAxis
* EffectOfTransitionToIFRSsMember
* RedesignationAxis
* RedesignatedAmountMember
* FairValueAsDeemedCostAxis
* AggregateAdjustmentToCarryingValueReportedUnderPreviousGAAPMember
* DepartureFromRequirementOfIFRSAxis,
* IncreaseDecreaseDueToDepartureFromRequirementOfIFRSMember
* ComponentsOfEquityAxis
* TreasurySharesMember
* TypesOfRisksAxis
* RiskDiversificationEffectMember
* AmountsArisingFromInsuranceContractsAxis
* ReinsurersShareOfAmountArisingFromInsuranceContractsMember
* NetDefinedBenefitLiabilityAssetAxis
* PresentValueOfDefinedBenefitObligationMember
* PlanAssetsMember
* EffectOfAssetCeilingMember

Let **non-positive sub-string exclusions** be the following set of strings:

* adjust
* consolidat
* netting
* reconcili
* reclass
* change
* increasedecreas

Let **excluded axes** be as defined in DQC0080.

For each fact with a concept in the list of **non-negative concepts** defined in DQC.IFRS.0080, and a value of EliminationOfIntersegmentAmountsMember for the SegmentConsolidationItemsAxis, the value MUST be less than or equal to zero unless:

* the fact has a dimension with a non-default value that is in the set of **non-positive excluded axis/member pairs**; or
* the fact has a dimension and member that is in the set of **excluded axes**; or
* any string in **non-positive sub-string exclusions** is a case-insensitive substring of the local name of any non-default dimension member applied to the fact.

### Part 2

Let **asset-related concepts** be the list of concepts defined in [dqc_0091_ifrs_2019_concepts.csv](https://github.com/DataQualityCommittee/dqc_us_rules/blob/master/dqc_us_rules/resources/DQC_IFRS_0091/dqc_0091_ifrs_2019_concepts.csv).

For each fact with a concept in the list of **asset-related concepts** that has the CarryingAmountAccumulatedDepreciationAmortisationAndImpairmentAndGrossCarryingAmountAxis dimension with one of the following members:

* AccumulatedImpairmentMember
* AccumulatedDepreciationAmortisationAndImpairmentMember
* AccumulatedDepreciationAmortisationAndImpairmentMember

the value MUST be less than or equal to zero unless:

* the fact has a dimension with a non-default value that is in the set of **non-positive excluded axis/member pairs**; or
* the fact has a dimension and member that is in the set of **excluded axes**; or
* any string in **non-positive sub-string exclusions** is a case-insensitive substring of the local name of any non-default dimension member applied to the fact.

## Example rule message
**Part 1**
DecreaseDueToHarvestBiologicalAssets has a value of 25,000,000 which is more than zero. This element should not have a positive value when used with the EliminationOfIntersegmentAmountsMember.
Expand Down
Loading

0 comments on commit 76f7f36

Please sign in to comment.