1 of 58

Introducing an Interoperability Standard

for Qualitative Data:

The Reproducible Open Coding Kit (ROCK)

Szilvia Zörgő

Oct. 15, 2025

2 of 58

System’s/component’s ability to work with

or use (part of) another system

Open science goal:Meaningfully interlinked network of contextualized data

Machine-readability

Qualitative data

3 of 58

Challenges for qualitative data

Push-back, critical issues:

Context

De-identification

Aggregation

Reuse

Lack of open-source infrastructure & tools

Isolation, (in)visibility, compatibility issues

Overreliance on proprietary software

Exporting coded data or analyses

Collaboration & inclusivity

Access after license expiration

Sharing (even within a research team)

(non-numerical, non-categorical)

4 of 58

Contextualization of data

Cultivation of FLOSS ecosystem

Machine-readability

Open standard

5 of 58

Standard

Set of guidelines…

So hardware & software can work together (compatibility) and exchange data (interoperability)

Agreed way of doing things

Concepts (what exists)

Definitions (what they mean)

Conventions (how to specify concepts)

Gjalt-Jorn Peters

Szilvia Zörgő

The Reproducible Open Coding Kit (ROCK)

(Anno 2018)

Human- and machine-readable, open standard for qualitative data

6 of 58

Plain text files

7 of 58

Plain text files

Collaboration, inclusivity, FLOSS

Specialized software (software agnostic)

Plain text files

Non-textual data requires “transcription”

8 of 58

Main phases in qualitative research

Collect data

Code data

Identify themes

Disseminate results

9 of 58

Main phases in qualitative research

Collect data

Code data

Identify themes

Disseminate results

10 of 58

Working with qualitative data

Data providers (cases)

Codes (development, scheme, type)

Coding (+segmentation)

Sources (files)

Case A

Case B

Case C

Attributes (e.g., socdem., setting)

Focus group 1

Case A: male, 23

Case B: female, 35

Case C: male, 31

FG1

FG2

FG3

11 of 58

---

ROCK_attributes:

  -

    cid: “case_A"

    age: "23"

    sex: “male"

  -

    cid: “case_B"

    age: “35"

    sex: “female"

---

[[cid= case_A]]

[[uid=7q0xb29c]] Lorem ipsum dolor sit amet, consectetur adipiscing elit.

[[uid=7q0xb29f]] Maecenas at faucibus justo.

[[uid=7q0xb29g]] Nam facilisis id magna non facilisis.

[[uid=7q0xb29j]] Vivamus ullamcorper ligula magna, non blandit imperdiet in.

[[uid=7q0xb29k]] Sed felis sem, euismod et tincidunt quis, venenatis vel tellus.

[[uid=7q0xb29l]] Fusce non nisl tristique, ultricies augue eget, aliquet nisi.

[[uid=7q0xb29m]] Sed elementum turpis eu tempus tincidunt.

[[uid=7q0xb29n]] Donec vel quam vel eros elementum ullamcorper non sed velit.

---<<SectionBreak>>---

[[uid=7q0xb29p]] Suspendisse in finibus tortor, vehicula volutpat nulla.

[[uid=7q0xb29q]] Sed vestibulum, mauris vitae faucibus malesuada, et vehicula nisi nulla eget arcu.

[[uid=7q0xb29r]] Donec nulla elit, cursus in mauris vitae, iaculis finibus ligula.

[[uid=7q0xb29s]] Sed sit amet ante elementum, hendrerit mauris id, euismod orci.

[[uid=7q0xb29y]] Praesent tellus felis, consectetur cursus risus ac, tempus sollicitudin lacus.

[[uid=7q0xb2b0]] Duis viverra laoreet purus vitae venenatis.

---<<SectionBreak>>---

[[uid=7q0xb2b1]] Ut viverra nulla dolor, consectetur commodo augue fermentum ac.

[[uid=7q0xb2b4]] Nunc tempus vestibulum tortor, vitae sollicitudin nulla ultricies et. [[uid=7q0xb2b8]] Mauris in lorem, id tempor elit.

Source

Plain text file;

≤1 utterances

Utterance

Line of data -> \n;

Chars, sentences, ¶, mins

ROCK conventions

How we specify things…

12 of 58

---

ROCK_attributes:

  -

    cid: “case_A"

    age: "23"

    sex: “male"

  -

    cid: “case_B"

    age: “35"

    sex: “female"

---

[[cid= case_A]]

[[uid=7q0xb29c]] Lorem ipsum dolor sit amet, consectetur adipiscing elit.

[[uid=7q0xb29f]] Maecenas at faucibus justo.

[[uid=7q0xb29g]] Nam facilisis id magna non facilisis.

[[uid=7q0xb29j]] Vivamus ullamcorper ligula magna, non blandit imperdiet in.

[[uid=7q0xb29k]] Sed felis sem, euismod et tincidunt quis, venenatis vel tellus.

[[uid=7q0xb29l]] Fusce non nisl tristique, ultricies augue eget, aliquet nisi.

[[uid=7q0xb29m]] Sed elementum turpis eu tempus tincidunt.

[[uid=7q0xb29n]] Donec vel quam vel eros elementum ullamcorper non sed velit.

---<<SectionBreak>>---

[[uid=7q0xb29p]] Suspendisse in finibus tortor, vehicula volutpat nulla.

[[uid=7q0xb29q]] Sed vestibulum, mauris vitae faucibus malesuada, et vehicula nisi nulla eget arcu.

[[uid=7q0xb29r]] Donec nulla elit, cursus in mauris vitae, iaculis finibus ligula.

[[uid=7q0xb29s]] Sed sit amet ante elementum, hendrerit mauris id, euismod orci.

[[uid=7q0xb29y]] Praesent tellus felis, consectetur cursus risus ac, tempus sollicitudin lacus.

[[uid=7q0xb2b0]] Duis viverra laoreet purus vitae venenatis.

---<<SectionBreak>>---

[[uid=7q0xb2b1]] Ut viverra nulla dolor, consectetur commodo augue fermentum ac.

[[uid=7q0xb2b4]] Nunc tempus vestibulum tortor, vitae sollicitudin nulla ultricies et. [[uid=7q0xb2b8]] Mauris in lorem, id tempor elit.

Source

Plain text file;

≤1 utterances

Utterance

Line of data -> \n;

Chars, sentences, ¶, mins

ROCK conventions

Case attributes

Can be for any class

(e.g., data collection, researcher)

13 of 58

---

ROCK_attributes:

  -

    cid: “case_A"

    age: "23"

    sex: “male"

  -

    cid: “case_B"

    age: “35"

    sex: “female"

---

[[cid= case_A]]

[[uid=7q0xb29c]] Lorem ipsum dolor sit amet, consectetur adipiscing elit.

[[uid=7q0xb29f]] Maecenas at faucibus justo.

[[uid=7q0xb29g]] Nam facilisis id magna non facilisis.

[[uid=7q0xb29j]] Vivamus ullamcorper ligula magna, non blandit imperdiet in.

[[uid=7q0xb29k]] Sed felis sem, euismod et tincidunt quis, venenatis vel tellus.

[[uid=7q0xb29l]] Fusce non nisl tristique, ultricies augue eget, aliquet nisi.

[[uid=7q0xb29m]] Sed elementum turpis eu tempus tincidunt.

[[uid=7q0xb29n]] Donec vel quam vel eros elementum ullamcorper non sed velit.

---<<SectionBreak>>---

[[uid=7q0xb29p]] Suspendisse in finibus tortor, vehicula volutpat nulla.

[[uid=7q0xb29q]] Sed vestibulum, mauris vitae faucibus malesuada, et vehicula nisi nulla eget arcu.

[[uid=7q0xb29r]] Donec nulla elit, cursus in mauris vitae, iaculis finibus ligula.

[[uid=7q0xb29s]] Sed sit amet ante elementum, hendrerit mauris id, euismod orci.

[[uid=7q0xb29y]] Praesent tellus felis, consectetur cursus risus ac, tempus sollicitudin lacus.

[[uid=7q0xb2b0]] Duis viverra laoreet purus vitae venenatis.

---<<SectionBreak>>---

[[uid=7q0xb2b1]] Ut viverra nulla dolor, consectetur commodo augue fermentum ac.

[[uid=7q0xb2b4]] Nunc tempus vestibulum tortor, vitae sollicitudin nulla ultricies et. [[uid=7q0xb2b8]] Mauris in lorem, id tempor elit.

Source

Plain text file;

≤1 utterances

Utterance

Line of data -> \n;

Chars, sentences, ¶, mins

ROCK conventions

Case attributes

Can be for any class

(e.g., data collection, researcher)

Utterance identifier

Unique (date/time-based);

Refer to any line

14 of 58

---

ROCK_attributes:

  -

    cid: “case_A"

    age: "23"

    sex: “male"

  -

    cid: “case_B"

    age: “35"

    sex: “female"

---

[[cid= case_A]]

[[uid=7q0xb29c]] Lorem ipsum dolor sit amet, consectetur adipiscing elit.

[[uid=7q0xb29f]] Maecenas at faucibus justo.

[[uid=7q0xb29g]] Nam facilisis id magna non facilisis.

[[uid=7q0xb29j]] Vivamus ullamcorper ligula magna, non blandit imperdiet in.

[[uid=7q0xb29k]] Sed felis sem, euismod et tincidunt quis, venenatis vel tellus.

[[uid=7q0xb29l]] Fusce non nisl tristique, ultricies augue eget, aliquet nisi.

[[uid=7q0xb29m]] Sed elementum turpis eu tempus tincidunt.

[[uid=7q0xb29n]] Donec vel quam vel eros elementum ullamcorper non sed velit.

---<<SectionBreak>>---

[[uid=7q0xb29p]] Suspendisse in finibus tortor, vehicula volutpat nulla.

[[uid=7q0xb29q]] Sed vestibulum, mauris vitae faucibus malesuada, et vehicula nisi nulla eget arcu.

[[uid=7q0xb29r]] Donec nulla elit, cursus in mauris vitae, iaculis finibus ligula.

[[uid=7q0xb29s]] Sed sit amet ante elementum, hendrerit mauris id, euismod orci.

[[uid=7q0xb29y]] Praesent tellus felis, consectetur cursus risus ac, tempus sollicitudin lacus.

[[uid=7q0xb2b0]] Duis viverra laoreet purus vitae venenatis.

---<<SectionBreak>>---

[[uid=7q0xb2b1]] Ut viverra nulla dolor, consectetur commodo augue fermentum ac.

[[uid=7q0xb2b4]] Nunc tempus vestibulum tortor, vitae sollicitudin nulla ultricies et. [[uid=7q0xb2b8]] Mauris in lorem, id tempor elit.

Source

Plain text file;

≤1 utterances

Utterance

Line of data -> \n;

Chars, sentences, ¶, mins

ROCK conventions

Case attributes

Can be for any class

(e.g., data collection, researcher)

Utterance identifier

Unique (date/time-based);

Refer to any line

Case identifier

Until another cid is specified

data assigned same case

15 of 58

---

ROCK_attributes:

  -

    cid: “case_A"

    age: "23"

    sex: “male"

  -

    cid: “case_B"

    age: “35"

    sex: “female"

---

[[cid= case_A]]

[[uid=7q0xb29c]] Lorem ipsum dolor sit amet, consectetur adipiscing elit.

[[uid=7q0xb29f]] Maecenas at faucibus justo.

[[uid=7q0xb29g]] Nam facilisis id magna non facilisis.

[[uid=7q0xb29j]] Vivamus ullamcorper ligula magna, non blandit imperdiet in.

[[uid=7q0xb29k]] Sed felis sem, euismod et tincidunt quis, venenatis vel tellus.

[[uid=7q0xb29l]] Fusce non nisl tristique, ultricies augue eget, aliquet nisi.

[[uid=7q0xb29m]] Sed elementum turpis eu tempus tincidunt.

[[uid=7q0xb29n]] Donec vel quam vel eros elementum ullamcorper non sed velit.

---<<SectionBreak>>---

[[uid=7q0xb29p]] Suspendisse in finibus tortor, vehicula volutpat nulla.

[[uid=7q0xb29q]] Sed vestibulum, mauris vitae faucibus malesuada, et vehicula nisi nulla eget arcu.

[[uid=7q0xb29r]] Donec nulla elit, cursus in mauris vitae, iaculis finibus ligula.

[[uid=7q0xb29s]] Sed sit amet ante elementum, hendrerit mauris id, euismod orci.

[[uid=7q0xb29y]] Praesent tellus felis, consectetur cursus risus ac, tempus sollicitudin lacus.

[[uid=7q0xb2b0]] Duis viverra laoreet purus vitae venenatis.

---<<SectionBreak>>---

[[uid=7q0xb2b1]] Ut viverra nulla dolor, consectetur commodo augue fermentum ac.

[[uid=7q0xb2b4]] Nunc tempus vestibulum tortor, vitae sollicitudin nulla ultricies et. [[uid=7q0xb2b8]] Mauris in lorem, id tempor elit.

Source

Plain text file;

≤1 utterances

Utterance

Line of data -> \n;

Chars, sentences, ¶, mins

Case identifier

Until another cid is specified

data assigned same case

Section break

Can be multiple in parallel

(e.g., topic, turn-of-talk, pause)

Case attributes

Can be for any class

(e.g., data collection, researcher)

ROCK conventions

Utterance identifier

Unique (date/time-based);

Refer to any line

16 of 58

---

ROCK_attributes:

  -

    cid: “case_A"

    age: "23"

    sex: “male"

  -

    cid: “case_B"

    age: “35"

    sex: “female"

---

[[cid= case_A]]

[[uid=7q0xb29c]] Lorem ipsum dolor sit amet, consectetur adipiscing elit.

[[uid=7q0xb29f]] Maecenas at faucibus justo.

[[uid=7q0xb29g]] Nam facilisis id magna non facilisis. [[CodeD]]

[[uid=7q0xb29j]] Vivamus ullamcorper ligula magna, non blandit imperdiet in. [[CodeD]] [[CodeB]]

[[uid=7q0xb29k]] Sed felis sem, euismod et tincidunt quis, venenatis vel tellus.

[[uid=7q0xb29l]] Fusce non nisl tristique, ultricies augue eget, aliquet nisi.

[[uid=7q0xb29m]] Sed elementum turpis eu tempus tincidunt. [[CodeB]] [[CodeD]]

[[uid=7q0xb29n]] Donec vel quam vel eros elementum ullamcorper non sed velit.

---<<SectionBreak>>---

[[uid=7q0xb29p]] Suspendisse in finibus tortor, vehicula volutpat nulla. [[Parent>Child]]

[[uid=7q0xb29q]] Sed vestibulum, mauris vitae faucibus malesuada, et vehicula nisi nulla eget arcu.

[[uid=7q0xb29r]] Donec nulla elit, cursus in mauris vitae, iaculis finibus ligula. [[CodeA]]

[[uid=7q0xb29s]] Sed sit amet ante elementum, hendrerit mauris id, euismod orci.

[[uid=7q0xb29y]] Praesent tellus felis, consectetur cursus risus ac, tempus sollicitudin lacus.

[[uid=7q0xb2b0]] Duis viverra laoreet purus vitae venenatis. [[intensity||moderate]]

---<<SectionBreak>>---

[[uid=7q0xb2b1]] Ut viverra nulla dolor, consectetur commodo augue fermentum ac.

[[uid=7q0xb2b4]] Nunc tempus vestibulum tortor, vitae sollicitudin nulla ultricies et. [[CodeC]]

[[uid=7q0xb2b8]] Mauris in lorem, id tempor elit. [[originatingCode->receivingCode||edgeType]]

Source

Plain text file;

≤1 utterances

Utterance

Line of data -> \n;

Chars, sentences, ¶, mins

Case identifier

Until another cid is specified

data assigned same case

Section break

Can be multiple in parallel

(e.g., topic, turn-of-talk, pause)

Case attributes

Can be for any class

(e.g., data collection, researcher)

ROCK conventions

Utterance identifier

Unique (date/time-based);

Refer to any line

17 of 58

Coding:

One or more codes appended to an utterance

Flat

No/uniform relationship

[[happy]]

[[sad]]

Hierarchical

Parent – child relationship

[[support>emotional]]

[[support>physical]]

Supported code types

Network

Various types of relationships

[[Whole->Part||structural]]

[[Event01->Event02||temporal]]

Code values

Intensity, frequency, magnitude, etc.

[[age||43]]

[[intensity||moderate]]

[[originatingCode->receivingCode||edgeType]]

18 of 58

19 of 58

The ROCK standard is implemented in:

- the R package {rock}

- a suite of apps

Why employ a standard?

Standard

Software

[[cid= case_A]]

[[uid=7q0xb29c]]

---<<SectionBreak>>---

[[CodeD]]

[[Parent>Child]]

20 of 58

The ROCK standard is implemented in:

- the R package {rock}

- a suite of apps

Why employ a standard?

Standard

Software

[[cid= case_A]]

[[uid=7q0xb29c]]

---<<SectionBreak>>---

[[CodeD]]

[[Parent>Child]]

21 of 58

The R package {rock}

Over 100 functions

(Anno 2019)

22 of 58

Unique identifiers per line

To refer to any line in a dataset

For merging sources (e.g., multiple coders or iterations)

Add UIDs

23 of 58

Merge sources

Multiple coders or iterations

Add UIDs

Merged document with all codes

24 of 58

Merge sources

Inspect coded fragments

With x lines of context

Add UIDs

De- and re-contextualization

25 of 58

Merge sources

Inspect coded fragments

Inspect code tree & attributes

Add UIDs

26 of 58

Merge sources

Inspect coded fragments

Inspect code tree & attributes

Recode functions

Merge

Split

Rename

Add child

Move to another parent

Add UIDs

Parent A

Child

Child

Parent B

Child

Child

Child

27 of 58

Merge sources

Inspect coded fragments

Inspect code tree & attributes

Recode functions

Merge

Split

Rename

Add child

Move to another parent

Add UIDs

Emotional support

Reflecting

Physical support

Financial

Logistical

Practical

Listening

28 of 58

Merge sources

Inspect coded fragments

Inspect code tree & attributes

Recode functions

Merge

Split

Rename

Add child

Move to another parent

Add UIDs

Emotional support

Reflecting

Physical support

Financial

Logistical

Practical

Listening

29 of 58

Merge sources

Inspect coded fragments

Inspect code tree & attributes

Recode functions

Merge

Split

Rename

Add child

Move to another parent

Add UIDs

Emotional support

Listening

Reflecting

Physical support

Financial

Logistical

Practical

Caring

30 of 58

Merge sources

Inspect coded fragments

Inspect code tree & attributes

Recode functions

Merge

Split

Rename

Add child

Move to another parent

Add UIDs

Emotional support

Listening

Reflecting

Physical support

Financial

Logistical

Practical

Caring

31 of 58

Merge sources

Add UIDs

Inspect coded fragments

Inspect code tree & attributes

Recode functions

Visualizations

32 of 58

Case attributes

Segmentation & Data

Codes

Qualitative Data Table

33 of 58

Qualitative/Unified Exploration of State Transitions (QUEST)

Epistemic Network Analysis (ENA)

34 of 58

The ROCK standard is implemented in:

- the R package {rock}

- a suite of apps

Why employ a standard?

Standard

Software

[[cid= case_A]]

[[uid=7q0xb29c]]

---<<SectionBreak>>---

[[CodeD]]

[[Parent>Child]]

35 of 58

Original iROCK

Coding & Segmentation GUIs

36 of 58

37 of 58

38 of 58

Cultivating the FLOSS ecosystem

39 of 58

REFI-QDA

ROCK

Rotterdam Exchange Format Initiative: By 8 proprietary companies; Export to XML format; Open exchange standard; Not human-readable or fully interoperable

{qualchemy}

Cultivating the FLOSS ecosystem

40 of 58

Contextualization of data

Cultivation of FLOSS ecosystem

Machine-readability

Open standard

41 of 58

42 of 58

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

43 of 58

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

44 of 58

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

45 of 58

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

46 of 58

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

47 of 58

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

48 of 58

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

Questions (e.g.):

Sample?

Data collection?

RQs?

Concepts?

Research site(s)?

Codebook?

How to contextualize data better?

49 of 58

Dataset attributes

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

Concepts

Codebook

Data collection instrument

Retain pluriformity, epistemic diversity

Ensure conceptual clarity

“Beliefs”

“Creative repurposing”

“Democracy”

Interview guide

Field journal template

Observation protocol

Code label (human-readable)

Code ID (machine-readable)

Definition (elaborate)

Examples (from data)

Data provision

Field site(s)

Cases

Attributes

Language

50 of 58

Dataset attributes

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

Concepts

Codebook

Data collection instrument

Interview guide

Field journal template

Observation protocol

Code label (human-readable)

Code ID (machine-readable)

Definition (elaborate)

Examples (from data)

Data provision

Field site(s)

Cases

Attributes

Language

Rich metadata

[[uid=7q0xb29c]]

[[CodeD]]

[[Parent>Child]]

[[cid= case_A]]

Retain pluriformity, epistemic diversity

Ensure conceptual clarity

“Beliefs”

“Creative repurposing”

“Democracy”

51 of 58

Partial automation:�Details of data provision

Coding scheme

Case attributes

52 of 58

Dataset attributes

Files

Creators

Abstract

Date

DOI

Categorization

Licensing

Concepts

Codebook

Data collection instrument

Interview guide

Field journal template

Observation protocol

Code label (human-readable)

Code ID (machine-readable)

Definition (elaborate)

Examples (from data)

Data provision

Field site(s)

Cases

Attributes

Language

Rich metadata

Storage

Univocal reference

[[uid=7q0xb29c]]

[[CodeD]]

[[Parent>Child]]

[[cid= case_A]]

Retain pluriformity, epistemic diversity

Ensure conceptual clarity

“Beliefs”

“Creative repurposing”

“Democracy”

53 of 58

Public repository

Codebook

Interview guide

Constructs

Metadata

Dataset attributes

Concepts

Instrument

Codebook

Data provision

Etc.

Rich metadata

Storage

Univocal reference

54 of 58

Rich metadata

Storage

Univocal reference

55 of 58

Codebook

UpcyClin_Codebook_2025_gjt37jk

Interview guide

UpcyClin_IntGuide_2025_pt345sd

Question #5

UpcyClin_GuideQ5_2025_vt6387td

Code: Reorganization

UpcyClin_Code_2025_xv7531rr

“Creative repurposing”

UpcyClin_Concept_2025_gh195iz

56 of 58

Connected Open Machine-readable Meaningful Science (COMMS)

Linked system of community-owned repos with automatic persistent ID generation

The ROCK standard

Cultivation of FLOSS ecosystem

Partial automation of metadata specification

Upcycled Clinic

Rich metadata template providing better contextualization of qualitative datasets

57 of 58

rock.science

www.szilviazorgo.com/fair

58 of 58

Introducing an Interoperability Standard

for Qualitative Data:

The Reproducible Open Coding Kit (ROCK)

Szilvia Zörgő

Oct. 15, 2025

Thank you for your attention!

s.zorgo@maastrichtuniversity.nl