How can you use HED?#
HED (Hierarchical Event Descriptors) serves different needs throughout the research lifecycle. Whether you’re collecting data, annotating datasets, or analyzing results, HED provides tools and frameworks to make your work more efficient and your data more valuable.
New to HED?
If this is your first time learning about HED, start with the Introduction to HED for basic concepts and quick start paths. This guide provides detailed workflows for each research role.
Research roles and HED workflows#
HED serves researchers in different capacities throughout the data lifecycle. Choose your primary role to find relevant tools and guidance:
Planning experiments, collecting data with proper event logging, and preparing data for analysis.
Key needs: Event logging best practices, data collection standards, log-to-event conversion
Adding HED annotations to existing datasets, curating data for sharing, BIDS/NWB integration.
Key needs: Annotation tools, validation workflows, standardized formats
Searching and analyzing HED-annotated data, extracting design matrices, cross-study comparisons.
Key needs: Search tools, programming APIs, analysis workflows
Building software that integrates with HED, creating analysis pipelines, extending HED functionality.
Key needs: APIs, schema specifications, integration guidelines
Developing domain-specific vocabularies (HED library schemas) to capture domain specific concepts in metadata.
Key needs: Schema development tools, community coordination, validation frameworks
🧪 As an experimenter#
Planning experiments, collecting data, and preparing for analysis
You’re designing and running experiments to test hypotheses and study behavior. HED helps you capture what actually happened during data collection in a way that maximizes downstream usability and enables powerful analyses.
Challenges for experimenters#
Meaningless event codes (1, 2, 3)
Log files require constant documentation
Analysis code breaks when events change
Difficult to compare across experiments
Data sharing requires extensive explanation
Self-documenting event annotations
Standardized vocabulary across studies
HED-enabled analysis works automatically
Easy cross-experiment comparisons
Data ready for sharing in BIDS/NWB
Essential topics for experimenters#
🎯 Planning and running experiments
Key questions to address:
What events should be logged during data collection?
How will experimental design and conditions be recorded?
How will logs be synchronized with neuroimaging data?
What participant responses need to be captured?
Critical principle: Data that isn’t recorded is lost forever!
Event logging best practices:
Mark ALL events visible to participants (stimuli, cues, instructions, feedback)
Record participant responses with precise timing
Include experimental control markers (trial/block boundaries, condition changes)
Capture incidental events that might affect neural responses
Plan for pilot testing to identify missing events
Example event types to capture:
Sensory presentations: Visual stimuli, auditory cues, tactile feedback
Participant actions: Button presses, eye movements, verbal responses
Experimental control: Trial starts, condition changes, break periods
Environmental events: Equipment issues, interruptions, calibration
🔄 Post-processing and data transformation
After data collection, raw logs need processing before analysis. Table remodeling tools help transform experimental logs into analysis-ready event files.
Common transformations needed:
Log summarization: Get overview of collected events
Code expansion: Convert numeric codes to meaningful categories
Column restructuring: Create BIDS-compliant event files
Data validation: Check for missing or invalid events
Example workflow using table remodeler tools:
[{
"operation": "summarize_column_values",
"description": "Get overview of log contents",
"parameters": {
"summary_name": "Log_summary",
"skip_columns": ["onset"],
"value_columns": ["description"]
}
}]
Resources for experimenters:
📚 Guide: Actionable event annotation and analysis in fMRI - Practical guidance with sample data
🛠️ Tools: Table remodeler tools - Transform logs to event files
🌐 Online: Event services - Process files without installation
📝 As a data annotator#
Organizing data, adding HED annotations, and preparing datasets for sharing
You’re curating datasets for sharing, adding meaningful annotations to event data, and ensuring data meets standards like BIDS or NWB. HED provides tools and workflows to make your data FAIR (Findable, Accessible, Interoperable, Reusable).
Challenges for data annotators#
Events meaningless without docs
Each dataset needs custom interpretation
Hard to validate metadata completeness
Manual coding for every analysis
Hard to find similar datasets
Self-documenting event annotations
Standardized vocabulary across datasets
Automated validation and quality checks
Analysis tools work out of the box
Easy cross-dataset search and comparison
Here are some topics of interest to data annotators:
Standardizing the format#
An important aspect of data-sharing is putting your data into a standardized format so that tools can read and manipulate the data without the need for special-purpose reformatting code. BIDS and NWB are the most widely-used standards for organizing data in neuroscience.
BIDS (Brain Imaging Data Structure) is a widely used data organization standard for neuroimaging and behavioral data. BIDS focuses on file organization with appropriate experimental metadata.
NWB (Neurodata Without Borders) is a data standard for neurophysiology, providing specifications for storing cellular, intracellular, and extracellular physiology data, and more recently neuroimaging and behavioral data. A single NWB file holds all of the data from an experimental session, synchronized to a common time line.
HED is well-integrated into both the BIDS and NWB standards.
Learning about HED#
The Introduction to HED gives a basic overview of HED’s history and goals and a quickstart introduction.
Use the HED schema Browser to explore the available HED standard vocabulary and the field-specific library schema extensions.
The “Capturing the nature of events…” paper works through a practical example of using HED annotations and suggests best practices for annotation.
The HED anntotation semantics tutorial presents detailed rules for making HED annotations meaningful.
See also the HED specification for detailed information on the rules for HED. Of special interest to HED users are Chapter 4: Basic annotation and Chapter 5: Advanced annotation. These chapters explain the different types of HED annotations and the rules for using them.
HED and BIDS#
BIDS (Brain Imaging Data Structure) is a widely used data organization standard for neuroimaging and behavioral data. BIDS focuses on file organization with appropriate experimental metadata.
Learning about BIDS:
If you are unfamiliar with BIDS, we recommend the BIDS Starter Kit.
Folders and Files gives an overview of how files in a BIDS dataset are organized.
The Annotating a BIDS dataset tutorial gives an overview of how to get the appropriate metadata into a BIDS dataset.
See the BIDS specification for detailed information on the rules for BIDS. Of special interest to HED annotators are the sections on Events and the Hierarchical Event Descriptors appendix.
There are a variety of tools available to convert to and from BIDS format as summarized in BIDS Tools.
Integrating HED in BIDS:
There are two strategies for incorporating HED annotations in a BIDS dataset:
Method 1: Use a JSON (sidecar) file to hold the annotations.
Method 2: Annotate each line in each event file using the HED column.
Method 1 is the typical way that HED annotations are incorporated into a BIDS dataset. The HED online tools allow you to easily generate a template JSON sidecar to fill in. The BIDS annotation quickstart walks through this process step-by-step.
Method 2 is usually used for instrument-generated annotations or for manual processing (such as users marking bad sections of the data or special features). In both cases the annotations are usually created using special-purpose tools.
When using HED you must provide a HED schema version indicating the HED vocabulary you are using. In BIDS, the schema versions are specified in dataset_description.json, a required JSON file that must be placed in the root directory of the dataset. See HED schema versions in the BIDS specification for examples.
HED and NWB#
NWB (Neurodata Without Borders) is a data standard for neurophysiology, providing specifications for storing cellular, intracellular, and extracellular physiology data, along with experimental metadata and behavior. A single NWB file holds all of the data from an experimental session, synchronized to a common time line.
Learning about NWB:
The PyNWB documentation provides tutorials and API references for working with NWB files in Python.
The ndx-hed extension enables HED integration in NWB files. This extension provides data types for storing HED annotations alongside neurophysiology data.
The HED annotation in NWB guide provides detailed information on using HED with NWB, including examples and best practices.
See the ndx-hed examples for runnable code demonstrating real-world usage patterns and integration techniques.
Integrating HED in NWB:
HED annotations in NWB are stored using the ndx-hed extension, which provides three main classes:
HedLabMetaData: Required for all HED-annotated NWB files. Specifies the HED schema version and optional lab-specific definitions.
HedTags: Used for row-specific HED annotations in any NWB DynamicTable (e.g., trials, events).
HedValueVector: Used for column-wide HED templates with value placeholders for shared annotation patterns.
Installation:
pip install -U ndx-hed
Basic workflow:
Install the ndx-hed extension package
Add HedLabMetaData to your NWB file with the HED schema version
Add HED columns to DynamicTables (trials, events, etc.) using HedTags
Annotate individual rows with HED strings
Example: Creating an NWB file with HED annotations
from pynwb import NWBFile
from ndx_hed import HedLabMetaData, HedTags
from datetime import datetime
# Create NWB file
nwbfile = NWBFile(
session_description="Example session with HED annotations",
identifier="example_session_001",
session_start_time=datetime.now()
)
# Add HED schema metadata (required)
hed_metadata = HedLabMetaData(hed_schema_version="8.4.0")
nwbfile.add_lab_meta_data(hed_metadata)
# Add HED column to trials table
nwbfile.add_trial_column(
name="HED",
col_cls=HedTags,
data=[],
description="HED annotations for trials"
)
# Add trials with HED annotations
nwbfile.add_trial(
start_time=0.0,
stop_time=1.0,
HED="Experimental-trial, (Sensory-event, Visual-presentation)"
)
The ndx-hed extension supports comprehensive validation to ensure HED annotations conform to schema specifications, and provides seamless conversion between BIDS events files and NWB EventsTable format with HED preservation.
Adding HED annotations#
This section discusses the strategy for adding annotations in a BIDS dataset using sidecars. The discussion assumes that you have a JSON sidecar template file ready to annotate.
Basic annotation strategies#
HED annotations come in variety of levels and complexity. If your HED annotations are in a JSON sidecar, it is easy to start simple and incrementally improve your annotations just by editing the JSON sidecar.
The HED annotation quickstart provides a recipe for creating a simple HED annotation.
A key part of the annotation is to include a good description of each type event. One way to do this is to include a Description/ tag with a text value as part of each annotation. A good description helps to clarify the information that you want to convey in the tags.
If you have NWB, you can convert an NWB `Events` table to a BIDS `_events.tsv` file, generate the template, annotate, and transform back. See the [**BIDS to NWB conversion example**](https://github.com/hed-standard/ndx-hed/blob/main/examples/04_bids_conversion.py) to see how that is done.More advanced annotations#
HED supports a number of advanced annotation concepts which are necessary for a complete description of the experiment.
HED definitions: allow users to define complex concepts. See Creating definitions and Using definitions for an overview and syntax.
Temporal scope: annotate event processes that extend over time and provide a context for events. Expression of temporal scope is enabled by Temporal-marker tags such as
DurationandDelay. Temporal scope allows tools to detect everything that is happening at any point in time, not just at the marked events.
For more complex temporal interactions, the Onset, Offset, and Inset tags together with the Definition tag allow simple HED annotations to encode complex, interleaved event processes.
See Temporal scope for the rules and usage.
Conditions and experimental design: HED allows users to express annotate experiment design, as well as other information such as task, and the experiment’s temporal organization. See HED conditions and design matrices.
The Advanced annotation chapter of the HED specification explains the rules for using these more advanced concepts.
Checking correctness#
Checking for errors is an ongoing and iterative process. It is much easier to build more complex annotations on a foundation of valid annotations. Thus, as you are adding HED annotations, you should frequently revalidate.
Validating HED annotations#
The HED validation guide describes the different types of validators available.
The HED errors documentation lists the different types of HED errors and their potential causes.
The JSON sidecar, which usually contains most of the HED annotations, can be easily validated using the HED online tools.
You should validate the HED annotations separately using the online tools or the HED Python tools before doing a full BIDS validation, as this will make the validation process much simpler.
Checking for consistency#
Several HED summary tools allow you to check consistency. The Understanding the data tutorial in the next section describes some tools that are available to help check the contents of the events files for surprises.
The summary tools are a start, but there are also experiment-specific aspects which ideally should be checked. Bad trial identification is a typical example of experiment-specific checking.
Example of experiment-specific checking.
Suppose each trial in an experiment should consist of a sequence:
stimulus–>key-press–>feedback
You can expect that there will be situations in which participants forget to press the key, press the wrong key, press the key multiple times, or press the key both before and after the feedback.
Ideally, a data annotator would provide information in the event file marking unusual things such as these bad trials, since it is easy for downstream users to improperly handle these situations, reducing the accuracy of analysis.
At this time, your only option is to do manual checks or write custom code to detect these types of experiment-specific inconsistencies. However, work is underway to include some standard types of checks in the table-remodeler documentation in future releases.
You may also want to reorganize the event files using the remodeling tools. See the Remap columns for an example.
📊 As a data analyst#
Using HED-annotated data for scientific discovery and cross-study analysis
Whether you are analyzing your own data or using shared data produced by others to answer a scientific question, fully understanding the data and its limitations is essential for accurate and reproducible analysis. HED annotations and tools enable powerful analysis workflows that work consistently across different experiments.
Challenges for data analysts#
Each dataset requires custom code
Event meanings buried in documentation
Cannot compare across studies
Manual data inspection for every analysis
Difficult to validate assumptions
Standardized search across datasets
Self-documenting event structure
Automatic design matrix extraction
Consistent analysis workflows
Built-in data quality summaries
Here are some topics of interest to data analysts:
Understanding the data#
Before running any analysis, you need to understand what events are actually present in your data. Most shared datasets have minimal documentation, so HED summary tools help you quickly assess data quality and content without manual inspection.
Column value summaries#
The column value summary compiles a summary of the values in the various columns of the event files in a dataset.
Does not require HED annotations
Shows all unique values and their frequencies
Helps identify missing or unexpected event codes
Useful for detecting data entry errors
You can generate this summary using the HED online tools for debugging by uploading a single event file (e.g., a BIDS _events.tsv) and its associated JSON sidecar.
HED tag summaries#
The HED tag summary creates a summary of the HED tags used to annotate the data.
Shows what types of events are present
Works across different event coding schemes
Enables comparison between datasets
Requires HED annotations in the dataset
Experimental design summaries#
The experimental design summary gives a summary of the condition variables or other structural tags relating to experimental design, task, or temporal layout of the experiment.
Extracts experimental conditions automatically
Shows task structure and organization
Identifies temporal markers (Onset/Offset/Duration)
Requires HED annotations with condition variables
Additional resources:
The table-remodeler documentation gives an overview of the remodeling tools and how to use them.
The HED conditions and design matrices guide explains how information structure information is encoded in HED and how to interpret the summaries of this information.
Preparing the data#
After understanding your data, you may need to transform or reorganize event files to support your analysis goals.
Data transformation#
HED remodeling tools allow you to transform event files without writing custom code:
Remap columns: Reorganize column structure for analysis tools
Factor extraction: Create binary factor vectors for event selection
Column merging: Combine information from multiple columns
Value renaming: Standardize event codes across sessions
Event file restructuring#
Common restructuring tasks include:
Converting wide-format to long-format event files
Extracting condition variables into separate columns
Adding computed columns (e.g., reaction times, trial types)
Filtering events based on criteria
See the table-remodeler documentation for detailed examples and operation descriptions.
Analyzing the data#
HED enables powerful, flexible analysis through standardized event selection and design matrix extraction. The key advantage is that HED queries work consistently across different experiments using different event codes.
Factor vectors and selection#
The most common analysis application is to select events satisfying particular criteria, and compare some measure on signals containing these events with a control.
HED facilitates this selection through factor vectors. A factor vector for an event file has the same number of rows as the event file (each row corresponding to an event marker). Factor vectors contain 1’s for rows in which a specified criterion is satisfied and 0’s otherwise.
Types of factor operations:
factor column operation: Creates factor vectors based on the unique values in specified columns. This operation not require HED annotations.
factor HED tags: Creates factor vectors based on a HED tag query. Enables flexible, generalizable event selection.
factor HED type: Creates factors based on HED tags representing structural information such as Condition-variable, Task, or Temporal-marker.
HED search queries#
HED search queries allow you to find events based on their semantic properties rather than specific event codes. This enables:
Cross-study analysis: Same query works on different datasets
Flexible criteria: Complex boolean logic with AND, OR, NOT
Hierarchical matching: Search at any level of tag hierarchy
Temporal context: Find events within ongoing processes
The HED search guide explains the HED query structure and available search options in detail.
HED analysis in EEGLAB#
EEGLAB, the interactive MATLAB toolbox for EEG/MEG analysis, supports HED through the EEGLAB HEDTools plugin.
Key capabilities:
Event search and epoching based on HED queries
Automated design matrix extraction
Integration with EEGLAB’s analysis pipeline
Support for both GUI and scripting workflows
Getting started with HED in EEGLAB:
The End-to-end processing of EEG with HED and EEGLAB book chapter, which can be found at https://doi.org/10.1007/978-1-0716-4260-3_6, works through the entire analysis process, including porting the analysis to high performance computing platforms. The site includes sample data to use in running the examples.
HED support in other tools#
Work is underway to integrate HED support in other analysis packages:
FieldTrip: Search and epoching integration in development
MNE-Python: Planned support for HED search and summary
NEMAR/EEGNET: Platform integration for large-scale analysis
If you are interested in helping with HED integration in other tools, please email hed.maintainers@gmail.com.
🛠️ As a tool developer#
Building software that integrates with HED and expanding the HED ecosystem
The HED ecosystem relies on tools that read, understand, and incorporate HED as part of analysis. Whether you’re adding HED support to existing software or creating new analysis tools, HED provides well-documented APIs and validation libraries to make integration straightforward.
Challenges for tool developers#
Custom event parsing for each dataset
Hard-coded event interpretations
Difficult to support multiple studies
Manual validation of event structure
Limited cross-tool compatibility
Standardized event parsing
Semantic event interpretation
Works across any HED-annotated dataset
Automated validation with clear errors
Interoperable with HED ecosystem
Here are some topics of interest to tool developers:
Getting started with HED integration#
Before diving into code, understanding HED’s structure and choosing the right platform will save time and ensure your integration follows HED best practices.
Understanding HED schemas#
HED schemas define the vocabulary available for annotations:
HED standard schema: Contains basic terms common across neuroimaging experiments
HED library schemas: Domain-specific vocabularies (e.g., SCORE for clinical EEG)
Schema versions: Schemas evolve with numbered versions (e.g., 8.3.0)
Key concepts for developers:
Schema loading: Most HED tools require a schema version (e.g., 8.4.0) in order to operate. The most recent versions are cached internally so that a given version of the schema is only loaded once.
Validation: Use HED validator libraries rather than implementing your own
Short vs long form: Tags can be written in short form (single tag: e.g.,
Face) or long form (full path to the root of the schema hierarchies: e.g.,Item/Biological-item/Anatomical-item/Body-part/Head/Face). It is recommend that short form be used in most cases. Tools refer to the applicable schema and expand paths when needed. The long form is needed mostly for search – searching forBody-partshould also return more specific annotations such asFace.
See HED schemas guide for detailed information.
Choosing your platform#
HED provides official tools in three languages:
Python: Most comprehensive, includes validation, analysis, and schema development tools
JavaScript: Focuses on validation, used by BIDS validator. A completely browser-based validator allows a complete data directory to be validated
MATLAB: Analysis-focused, integrates with EEGLAB - uses the Python tools underneath.
Decision guide:
Web applications: Use JavaScript validator or call REST services
Analysis pipelines: Use Python for maximum flexibility
MATLAB workflows: Use HEDTools plugin or MATLAB wrappers
Custom needs: Consider calling REST services from any language
Working with HED code bases#
The HED standard organization maintains open-source code projects in Python, MATLAB, and JavaScript. All repositories welcome contributions and issue reports.
Core resources:
Project page: https://www.hedtags.org
Documentation: https://www.hedtags.org/hed-resources
Annotated datasets: hed-examples repository
Schemas: hed-schemas repository
Python tools#
Focus: Core HED technology including validation, analysis, and schema development
Repository: hed-python | Package: pip install hedtools
Documentation: HED Python tools
JavaScript tools#
Focus: HED validation for web applications and BIDS validator
Repository: hed-javascript | Package: npm install hed-validator
Documentation: HED JavaScript tools
MATLAB tools#
Focus: Analysis and annotation with EEGLAB integration
Repository: hed-matlab | Installation: Via EEGLAB plugin manager
Documentation: HED MATLAB tools | CTagger GUI
Online tools and REST services#
Focus: Web-based validation, debugging, and programmatic access
Production: hedtools.org/hed | Development: hedtools.org/hed_dev
Repository: hed-web
Documentation: HED online tools
Contributing to HED development#
The HED project welcomes contributions from the community. Whether you’re reporting bugs, suggesting features, or contributing code, your input helps improve HED for everyone.
Reporting issues and feature requests#
Where to report:
Python tools: hed-python/issues
JavaScript tools: hed-javascript/issues
MATLAB tools: hed-matlab/issues
Schema issues: hed-schemas/issues
General questions: hed-schemas/issues
Contributing code:
All HED repositories welcome pull requests. See the CONTRIBUTING.md file in each repository for specific guidelines.
Alternatively, you can email hed.maintainers@gmail.com with questions or suggestions.
Future development plans#
The HED community is actively working on expanding HED’s capabilities and integration.
Long-term vision:
Develop more sophisticated analysis methods
Leverage AI to reduce the cognitive burden on users
Better integrate experimental control software with annotation workflows
Capture event relationships for complex automated analysis
Expand library schemas for specialized domains
Get involved:
If you have ideas or want to contribute to these efforts, please join the discussion on GitHub Discussions or email hed.maintainers@gmail.com.
🏗️ As a schema builder#
Extending HED vocabulary to support specialized domains and applications
HED annotations use terms from a hierarchically structured vocabulary called a HED schema. The HED standard schema contains basic terms common across most experiments, while HED library schemas extend the vocabulary for specialized domains like clinical EEG, movie annotation, or language studies.
Challenges for schema builders#
Inconsistent terminology across studies
Duplicate or conflicting terms
No validation of vocabulary structure
Difficult to share domain vocabularies
Hard to maintain backward compatibility
Structured, hierarchical vocabulary
Automated validation of schema structure
Version control and compatibility tracking
Community review process
Standardized schema attributes and rules
Here are some topics of interest to schema developers:
Exploring existing schemas#
Before proposing changes or creating a new schema, familiarize yourself with existing HED vocabularies to avoid duplication and understand HED’s organizational principles.
Viewing available schemas#
HED standard schema:
The HED Schema Viewer provides an interactive view of the HED standard schema, showing:
Hierarchical tag structure
Tag descriptions and attributes
Value classes and unit classes
Schema version history
HED library schemas:
Currently available library schemas include:
SCORE: Clinical EEG annotation vocabulary
View SCORE schema
Under development:
Movie annotation library
Language annotation library
These are not yet available for community comment. Email hed.maintainers@gmail.com for information about participating in ongoing library development efforts.
Understanding schema structure#
HED schemas are XML files with structured elements:
Tags: Hierarchically organized terms (e.g.,
Event/Sensory-event)Attributes: Properties of tags (e.g.,
requireChild,unique,recommended)Value classes: Allowed value types (e.g.,
textClass,numericClass)Unit classes: Measurement units and conversions (e.g.,
timeUnits,angleUnits)
Key principles:
Is-a relationship: Every tag has an “is-a” relationship with its parents
Uniqueness: Each term must be unique and not redundant with existing terms
Self-contained: Tag descriptions should be understandable without external context
See HED schema developer’s guide for detailed information on schema structure and design principles.
Contributing to existing schemas#
The HED community welcomes suggestions for improving existing schemas. Whether you’ve found an error, need additional terms, or want to clarify descriptions, your input helps improve HED for everyone.
Improving an existing schema#
If you see a need for additional terms in an existing schema, post an issue to hed-schemas/issues on GitHub.
Proposing changes to HED schemas
For new tags, include:
The name of the schema (standard or library name)
Proposed name of the new term
Brief and informative description of its meaning
Suggested location in the schema hierarchy
Explanation of why this term is needed and how it will be used
Examples of usage in annotations
For modifications to existing terms:
Current term name and location
Proposed changes (description, attributes, hierarchy)
Rationale for the change
Impact on existing annotations (if applicable)
For schema attributes or structure:
Description of the proposed new attribute, value class, or unit class
Use cases and examples
How it relates to existing schema features
Schema review process#
Schema changes go through a community review process:
Issue posted: You describe the proposed change on GitHub
Community discussion: Others comment on the proposal
Refinement: The proposal is refined based on feedback
Implementation: Approved changes are implemented in the schema
Version release: Changes are included in the next schema version
Important considerations:
Is-a relationship: New terms must satisfy the “is-a” relationship with parent tags
Uniqueness: Terms must not duplicate existing vocabulary
Clarity: Descriptions should be self-contained and unambiguous
Backward compatibility: Changes should minimize breaking existing annotations
All suggested changes should be reported using the hed-schemas/issues mechanism on GitHub.
Creating new schemas#
If your domain requires extensive specialized vocabulary not appropriate for the standard schema, you may want to create a new HED library schema.
Creating a new library schema#
Creating a library schema is a collaborative process that requires community engagement.
Getting started:
Post an issue on hed-schemas/issues to start the discussion.
Proposing a new HED library schema
Initial proposal should include:
Proposed name for the HED library schema
Brief description of the library’s purpose and scope
Example use cases and target audience
List of potential collaborators (GitHub handles)
Initial thoughts on vocabulary organization
Relationship to existing HED schemas (what’s missing from standard schema)
Requirements:
GitHub account: All schema development uses GitHub Pull Request mechanism
Community engagement: Willingness to participate in review discussions
Documentation: Commitment to documenting terms clearly
Long-term maintenance: Plan for maintaining the schema over time
Schema development workflow#
The schema development process follows these general steps:
Proposal and discussion: Post issue and gather community feedback
Planning: Define scope, structure, and initial term list
Initial schema creation: Develop first version following HED schema rules
Validation: Use schema validation tools to check structure
Community review: Gather feedback through GitHub discussions
Iteration: Refine based on feedback
Release: Publish to hed-schemas repository
Essential reading:
The HED schema developer’s guide provides comprehensive information on:
Schema XML structure and syntax
Attribute definitions and usage
Value class and unit class design
Versioning and compatibility
Testing and validation
Best practices for schema development
Private vocabularies and extensions#
Can I create my own private HED schema?
While technically possible, private schemas are not recommended and have limited tool support.
Why standardized schemas are preferred:
Tool compatibility: Many HED tools assume standardized schemas from the hed-schemas repository
Schema fetching: Tools automatically fetch/cache official schemas
Cross-dataset comparison: Standardized vocabularies enable meta-analyses
Community benefit: Shared vocabularies benefit the entire research community
Long-term maintainability: Official schemas are maintained by the community
Alternatives to private schemas:
Propose library schema: Work with the community to develop a standardized library
Extend existing schema: Suggest additions to standard or library schemas
Use definitions: Create complex concepts using existing vocabulary
Temporary extensions: Use descriptive tags (e.g.,
Description/...) until proper terms are available
Decision rationale:
The HED Working Group decided to prioritize standardized schemas after observing that unvetted private vocabularies would compromise HED’s ability to enable standardized dataset summaries and cross-study comparisons.
If you have a use case that genuinely requires a private vocabulary, please email hed.maintainers@gmail.com to discuss options.