Quick Start Guide

DDI-Codebook

Loading and processing a DDI-Codebook document:

from dartfx.ddi import ddicodebook

# Load from file
my_codebook = ddicodebook.loadxml('path/to/codebook.xml')

# Access study metadata
study = my_codebook.studyDscr

# Access variables
if my_codebook.dataDscr:
    for var in my_codebook.dataDscr.var:
        print(f"Variable: {var.name}")

DDI-CDI & Assistant Framework

Working with DDI-CDI is easiest using the Assistant framework, which manages identifiers and complex object skeletons for you.

Basic Lifecycle:

from dartfx.ddi.ddicdi import model_1_0_0 as model
from dartfx.ddi.ddicdi.assistants import CdiClassAssistant

# 1. Create resources
dataset = CdiClassAssistant.create(model.DataSet, name="MyDataset")
variable = CdiClassAssistant.create(model.InstanceVariable, name="AGE")

# 2. Relate resources (methods are bound to the model)
dataset.add_variable(variable)

# 3. Export to RDF
graph = dataset.to_rdf_graph()
print(graph.serialize(format="turtle"))

Conversion from DDI-Codebook

Transform DDI-Codebook metadata into a stack of DDI-CDI resources aligned with the CDIF profile:

from dartfx.ddi.utils import codebook_to_cdif

# cb is a loaded codeBookType instance
cdi_resources = codebook_to_cdif(cb)

# The result is a dictionary mapping URIs to Assistants
for uri, assistant in cdi_resources.items():
    print(f"Generated CDI Resource: {uri}")

Specification Loader

For introspecting the DDI-CDI specification itself:

from dartfx.ddi.ddicdi.specification import DdiCdiModel

# Initialize model from local spec files
cdi_spec = DdiCdiModel(root_dir='specifications/ddi-cdi-1.0')

# Search for classes
variable_classes = cdi_spec.search_classes("variable")

Next Steps