Purpose
This library allows accessing data of the International Electrotechnical Vocabulary (IEV):
-
Access IEV terms remotely, via the Electropedia website (www.electropedia.org)
-
Read IEV terms from an offline IEV termbase in Glossarist format
-
Parse an IEV exported Excel file and convert its contents into a Glossarist termbase
|
Warning
|
The last feature is only meant for IEC-internal use. The IEV export files can only be obtained from the IEC IT department. |
|
Note
|
The iev-data gem is obsolete by
this library and its functionality has been fully incorporated into this
library.
|
Install
Add this line to your Gemfile:
gem 'iev'
And then execute:
$ bundle
Or install it yourself as:
$ gem install iev
Usage
The gem comes with the iev executable, which provides the following commands:
iev export FILE -o OUTPUT_DIR-
Exports IEV data to Glossarist YAML format. Supports both Excel (
.xlsx/.xls) and SQLite (.sqlite3/.sqlite/.db) input files. Format is detected automatically from the file extension. iev xlsx2db FILE-
Imports Excel to SQLite database.
iev fetch CODE-
Fetches a single IEV concept and outputs YAML to stdout.
|
Warning
|
The IEV XLSX export files can only be obtained from the IEC Electropedia administrator. |
Fetching IEV terms from cached data
# Get term designation (from local YAML or GitHub remote)
Iev.get("103-01-02", "en")
=> "functional"
# If code not found, returns nil (does not raise)
Iev.get("111-11-11", "en")
=> nil
# If language not found, returns nil
Iev.get("103-01-02", "eee")
=> nil
# Fetch full concept data (all languages)
# Raises Iev::DataSource::NotFoundError if code not found
Iev.fetch_concept("103-01-02")
=> { "id" => "103-01-02", "data" => { ... } }
# Fetch localized term data
# Raises Iev::DataSource::NotFoundError if code not found
Iev.fetch_term("103-01-02", "en")
=> { "term" => "functional", ... }
Scraping IEV terms from Electropedia
Requires Chrome/Chromium installed. Uses Ferrum (headless Chrome) to bypass AWS WAF.
# Scrape concept data directly from electropedia.org
Iev.scrape_concept("103-01-02")
=> { "id" => "103-01-02", "data" => { "identifier" => "103-01-02", "localized_concepts" => { "eng" => { ... }, ... } } }
# Custom browser options (e.g., headless mode, window size)
scraper = Iev::Scraper.new(browser_opts: { headless: true, window_size: [1280, 800] })
concept = scraper.fetch_concept("103-01-02")
Converting IEV data to a Glossarist dataset
The export command converts an IEV Excel export or SQLite database into
Glossarist YAML concept files:
# From an Excel export
$ iev export termbase.xlsx -o /path/to/output
# From a SQLite database
$ iev export termbase.sqlite3 -o /path/to/output
# With filters
$ iev export termbase.xlsx -o /output --only-concepts "103-%" --only-languages "en,fr"
The output directory will contain a concepts/ subdirectory with Glossarist
concept and localized concept YAML files.
You can also use the Iev::Exporter class programmatically:
# Export from Excel
Iev::Exporter.new("termbase.xlsx", output_dir: "/path/to/output").export
# Export from SQLite with filters
collection = Iev::Exporter.new("termbase.sqlite3",
output_dir: "/path/to/output",
only_concepts: "103-%",
only_languages: "en,fr",
).export
# collection is a Glossarist::ManagedConceptCollection
Structure of the IEV Excel export
The columns are:
IEVREF-
concept ID of this term
LANGUAGE-
ISO 639-1 code (2 character)
TERM-
the designation of this concept in language of
LANGUAGE TERMATTRIBUTE-
a field of multiple uses, an array (separated by
;). More details below. SYNONYM1-
a synonym of this term
SYNONYM1ATTRIBUTE-
the
TERMATTRIBUTEthat applies toSYNONYM1 SYNONYM1STATUS-
One of
Preferred,Deprecated, nil. SYNONYM2-
second synonym of this term
SYNONYM2ATTRIBUTE-
the
TERMATTRIBUTEthat applies toSYNONYM2 SYNONYM2STATUS-
One of
Preferred,Deprecated, nil. SYNONYM3-
3rd synonym of this term
SYNONYM3ATTRIBUTE-
the
TERMATTRIBUTEthat applies toSYNONYM3 SYNONYM3STATUS-
One of
Preferred,Deprecated, nil. SYMBOLE-
Math symbol
DEFINITION-
definition text that includes
<note>and<example> SOURCE-
which document was this term was taken from
PUBLICATIONDATE-
YYYY-MMdate of publication STATUS-
Only
Standardfor now REPLACES-
IEVREFfor the deprecated term
Term field
-
Usually the text
-
If it is
…..(5 dots), it means that the translation is not available. -
If it is
foobar (acronym)orfoobar (akronim), it is an acronym.term.acronym⇒true.
Term attribute field
There are these data types inside the term attribute field. Make sure you split at ; for multiple entries.
formorn-
this means
term.grammar-genderis one of them,term.plurality⇒singular n pl-
term.grammar-gender⇒n,term.plurality⇒plural m pl-
term.grammar-gender⇒m,term.plurality⇒plural f pl-
term.grammar-gender⇒f,term.plurality⇒plural pl-
term.plurality⇒plural(else,singular) (in Zusammensetzungen) f-
term.compound-prefix⇒ true,term.grammar-gender⇒f (in Zusammensetzungen) m-
term.compound-prefix⇒ true,term.grammar-gender⇒m m, (abgelehnt)-
term.rejected⇒ true,term.grammar-gender⇒m f, (abgelehnt)-
term.rejected⇒ true,term.grammar-gender⇒f (略語)-
term.abbreviation⇒ true <…>-
this means the text (
…) inside is thedomainof this term (which field this term applies in) <相关条目:[SOMEIEVREF]>-
SOMEIEVREFhere represents the "related to" term. Add a relationship of this term toSOMEIEVREF. Adjektiv,adj,形容詞,형용사-
sets
term.grammar-particletoadj Präfix,(prefix),(préfixe),接尾語,접두사,(词头)-
sets
term.affixtoprefix CA-
term.geographical_area⇒CA US-
term.geographical_area⇒US noun,名詞-
term.grammar-particle⇒noun(all terms default tonoun) verb,動詞-
term.grammar-particle⇒verb
(sigle international), m ⇒ term.acronym = true, term.international = true, term.gender = 'm'
Term definition field
We need to parse out all NOTEs and EXAMPLEs and normalize them.
For all This links to <a href=IEV112-01-01>quantity</a>, we parse them and replace with:
This links to {{quantity, IEV:112-01-01}}.
e.g.
-
Every
<NOTE {N} -goes into a separate entry undernotes::
quotient of two quantities of different dimensions, used as a multiplier to express the proportionality equation between them
<NOTE 1 – A coefficient is a quantity having a dimension other than one. Examples: Hall coefficient, damping coefficient, temperature coefficient, gyromagnetic coefficient.
<NOTE 2 – The term "modulus" is sometimes used instead of coefficient. Example: modulus of elasticity.
definition: quotient of two quantities of different dimensions, used as a multiplier to express the proportionality equation between them
notes:
- A coefficient is a quantity having a dimension other than one. Examples: Hall coefficient, damping coefficient, temperature coefficient, gyromagnetic coefficient.
- The term "modulus" is sometimes used instead of coefficient. Example: modulus of elasticity.
-
A
<NOTE -goes intonotes::
quantity of dimension one defined by a combination of quantities
<NOTE – Characteristic numbers occur in particular in the theory of similarity. They carry the word "number" in their names. Examples: Reynolds number, Prandtl number.
definition:
notes:
- Characteristic numbers occur in particular in the theory of similarity. They carry the word "number" in their names. Examples: Reynolds number, Prandtl number.
-
Sometimes there are many
Note {N} to entry: `, they are identical to `NOTE -.
set of interrelated items that collectively fulfil a requirement
<p>Note 1 to entry: A system is considered to have a defined real or abstract boundary.
<p>Note 2 to entry: External resources (from outside the system boundary) may be required for the system to operate.
<p>Note 3 to entry: A system structure may be hierarchical, e.g. system, subsystem, component, etc.
<p>Note 4 to entry: Conditions of use and maintenance should be expressed or implied within the requirement.
definition: set of interrelated items that collectively fulfil a requirement
notes:
- A system is considered to have a defined real or abstract boundary.
- External resources (from outside the system boundary) may be required for the system to operate.
- A system structure may be hierarchical, e.g. system, subsystem, component, etc.
- Conditions of use and maintenance should be expressed or implied within the requirement.
-
Parse
EXAMPLE:
<a href=IEV112-01-01>quantity</a> which keeps the same value under particular circumstances, or which results from theoretical considerations
<p>EXAMPLE <a href=IEV103-05-26>time constant</a>, equilibrium constant for a chemical reaction, <a href=IEV112-03-09>fundamental physical constant</a>.
⇒
definition: {{quantity, IEV:112-01-01}} which keeps the same value under particular circumstances, or which results from theoretical considerations
examples:
- {{time constant, IEV:103-05-26}}, equilibrium constant for a chemical reaction, {{fundamental physical constant, IEV:112-03-09}}.
-
Remember to parse both
EXAMPLEandNote {N} to entry:.
level of sub-division within a system hierarchy
<p>EXAMPLE System, subsystem, assembly, and component. <p>Note 1 to entry: From the maintenance perspective, the indenture level depends upon various factors, including the complexity of the item's construction, the accessibility of sub items, skill level of maintenance personnel, test equipment facilities, and safety considerations.
definition: level of sub-division within a system hierarchy
examples:
- System, subsystem, assembly, and component.
notes:
- From the maintenance perspective, the indenture level depends upon various factors, including the complexity of the item's construction, the accessibility of sub items, skill level of maintenance personnel, test equipment facilities, and safety considerations.
-
Remember to parse both
EXEMPLEandNote {N} à l’article:in French
niveau de subdivision à l’intérieur de la hiérarchie d’un système
<p>EXEMPLE Système, sous-système, assemblage et composant. <p>Note 1 à l’article: Du point de vue de la maintenance, le niveau dans l’arborescence dépend de divers facteurs dont la complexité de la structure de l’entité, l’accessibilité aux sous-entités, le niveau de compétence du personnel de maintenance, les moyens de mesure et d’essai, et des considérations de sécurité.
definition: niveau de subdivision à l’intérieur de la hiérarchie d’un système
examples:
- Système, sous-système, assemblage et composant.
notes:
- Du point de vue de la maintenance, le niveau dans l’arborescence dépend de divers facteurs dont la complexité de la structure de l’entité, l’accessibilité aux sous-entités, le niveau de compétence du personnel de maintenance, les moyens de mesure et d’essai, et des considérations de sécurité.
Source field
Original:
IEC 60050-311:2001, 311-01-04
After parsing:
authoritative_source:
ref: IEC 60050-311:2001, 311-01-04
Excel-to-Glossarist Column Mapping
This section provides a complete mapping from every IEV Excel export column to the corresponding Glossarist concept model field. The IEV Excel export has 19 columns (see Structure of the IEV Excel export). Each row represents one localized term entry (one language variant of one concept).
Glossarist Model Layers
The Glossarist model organizes concept data into two layers:
-
ManagedConcept — the concept entry itself (identity, domain classification, cross-concept relationships, lifecycle)
-
LocalizedConcept — a language-specific variant of a concept (designations, definition, notes, examples, sources)
One IEV Excel row produces one LocalizedConcept, which is attached to its
ManagedConcept (identified by IEVREF).
Column-by-Column Mapping
The table below maps each of the 19 Excel columns to the Glossarist model.
| Excel Column | Glossarist Path | Data Type | Notes |
|---|---|---|---|
|
|
|
The concept identifier (e.g. |
|
|
|
Two-character code (e.g. |
|
|
|
Primary term designation. Creates a |
|
(multiple designation fields) |
Composite string |
Parsed by |
|
|
|
Additional designation. Creates a |
|
(multiple designation fields) |
Composite string |
Same parsing as |
|
|
|
Maps to the synonym’s normative status. The value is lowercased. Known localized values are mapped: e.g. |
|
|
|
Same pattern as |
|
(multiple designation fields) |
Composite string |
Same as |
|
|
|
Same as |
|
|
|
Same pattern as |
|
(multiple designation fields) |
Composite string |
Same as |
|
|
|
Same as |
|
|
|
International math symbol. Creates a |
|
|
HTML string |
The unified definition text is split by |
|
|
HTML string |
Parsed by |
|
|
|
Converted to a full ISO 8601 datetime. Creates two |
|
|
|
Only |
|
|
|
Parsed by |
TERMATTRIBUTE Sub-Field Mapping
The TERMATTRIBUTE column is a composite string parsed by TermAttrsParser.
It may contain multiple attributes separated by semicolons. The parser extracts
them in order: gender, plurality, geographical area, part of speech, usage
info, prefix.
| Parsed Value | Glossarist Path | Notes |
|---|---|---|
|
|
Grammatical gender. May appear inside brackets: |
|
|
Plurality. |
|
|
Part of speech. Localized variants are mapped: German |
Angle bracket text (ASCII or full-width) |
|
Usage info / domain indicator extracted from angle brackets. Full-width brackets used in some CJK terms. |
Prefix keywords in multiple languages |
|
Marks the designation as a prefix. Keywords include German, French, Japanese, Korean, Chinese, Portuguese variants. |
Two-letter uppercase (e.g. |
|
ISO 3166-1 alpha-2 country code. |
SOURCE Column Parsing
The SOURCE column is the most complex field. It is parsed by SourceParser
into one or more ConceptSource objects.
Relationship Status Detection
The parser detects the source relationship type from textual markers:
| Marker | Status | Notes |
|---|---|---|
Not-equal sign |
|
Definition differs from source. |
Approximately-equal sign |
|
Definition is similar to source. |
|
|
Cross-reference to another definition. |
|
|
Definition modified from source. Modification text is captured in |
(default) |
|
No special marker found. |
Source Reference Extraction
The parser normalizes and extracts the source reference (e.g. IEC 60050-121),
the clause locality (e.g. 151-12-05), and optionally resolves a URL via
Relaton. Reference normalization handles many localized forms: CEI to IEC,
UIT to ITU, VEI to IEV, etc.
Derived Fields (Not Directly From Excel Columns)
Some Glossarist model fields are derived from IEVREF or from combinations of columns during export:
| Glossarist Path | Source | Notes |
|---|---|---|
|
Derived from |
The IEVREF pattern |
|
|
Maps localized classification values: Chinese/Russian/Spanish |
|
Derived from |
The section-level domain URI (e.g. |
|
Hard-coded |
Always set to |
|
|
A second date entry with type |
|
Derived from |
Hierarchy relations using |
Glossarist Model Fields NOT Populated From IEV Excel
The following Glossarist model fields exist in the data model but are not populated from any IEV Excel column. They remain at their defaults:
| Glossarist Field | Description | Default |
|---|---|---|
|
External URI for the concept |
nil |
|
Managed-concept-level sources (distinct from localized sources) |
empty |
|
Managed-concept-level dates (distinct from localized dates) |
empty |
|
Concept lifecycle status (draft/valid/retired etc.) |
nil |
|
Release version tag |
nil |
|
Lineage source similarity percentage |
nil |
|
ISO 15924 script code |
nil |
|
ISO 24229 conversion system code |
nil |
|
ConceptReference collection on localized concept |
empty |
|
Entry status on ConceptData (duplicate of LocalizedConcept#entry_status) |
nil |
|
Non-verbal representations (images, tables, formulas) |
empty |
|
Per-designation language override |
nil |
|
Per-designation ISO 15924 script |
nil |
|
Per-designation ISO 24229 system |
nil |
|
International validity flag (set |
false |
|
Explicitly absent designation flag |
false |
|
Pronunciation entries (IPA, romanization, etc.) |
empty |
|
Per-designation bibliographic sources |
empty |
|
ISO 12620 term type classification (24 values) |
nil |
|
Designation-level relationships (abbreviated_form_for, short_form_for) |
empty |
|
Subject field / specific use |
nil |
|
Acronym type flag |
false |
|
Initialism type flag |
false |
|
Truncation type flag |
false |
|
Letter symbol designation type (subclass of Symbol with |
(not used) |
|
Graphical symbol designation type (subclass of Symbol with |
(not used) |
|
Review type |
nil |
Copyright and license
Data copyright IEC. All others copyright Ribose.
Data Model
Concept Domains
Exported concepts use domains (a collection of ConceptReference objects)
to represent the IEV subject area hierarchy. Each concept’s domains include
references to its area (e.g. area-103) and section (e.g. section-103-01).
data:
identifier: "103-01-01"
domains:
- concept_id: area-103
source: urn:iec:std:iec:60050
ref_type: domain
- concept_id: section-103-01
source: urn:iec:std:iec:60050
ref_type: domain
The ref_type: domain distinguishes domain references from other
ConceptReference types (local, urn, designation).
Subject Area Hierarchy
The SubjectAreaConcepts module creates area and section concepts that
form a two-level hierarchy with symmetric broader/narrower linkages
at the ManagedConcept#related level:
-
Area concepts (e.g.
area-103) — domain reference to themselves,narrowerrelations to their sections -
Section concepts (e.g.
section-103-01) — domain references to both parent area and themselves,broaderrelation to parent area,narrowerrelations to child IEV concepts (added byExporter) -
Regular IEV concepts (e.g.
103-01-02) —broaderrelation to their section concept (added byExporter)
All hierarchy RelatedConcept entries set both content (string, for
YAML serialization) and ref (Citation with source: "IEV" and id,
for RDF transformation via glossarist’s gloss ontology).
Separately, domains (classification via ConceptReference.domain(…))
and ConceptData#domain (per-localization string) remain for
classification/filtering — distinct from hierarchy.