epo_processor

command
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Command epo-processor is a zero-copy, resumable streaming ETL for European Patent Office (EPO) bulk data with built-in EPO ↔ HUPD overlap analysis.

This package contains only main(), which delegates to github.com/Qubut/epo-processor/cmd.Execute. All flag handling, config loading, logging, and pipeline wiring live in the cmd package.

devenv.nix exposes first-class convenience scripts on $PATH:

cd packages/epo_processor
devenv shell            # enter the Nix-managed dev environment

epo-build               # compile bin/epo-processor (auto-invoked below)
epo-process             # stream EPO XML → Parquet  (uses config/config.yaml)
epo-process-hupd        # download HUPD .tar → disk
epo-analyze [flags]     # build EPO↔HUPD linked dataset
epo-test                # go test -race ./...

Quick start (plain Go)

go build -o bin/epo-processor ./cmd/epo_processor
./bin/epo-processor --help

Subcommands

process — stream EPO XML archives to Parquet

epo-process                          # devenv
./bin/epo-processor process \        # plain Go
    --config config/config.yaml

Downloads every archive from the EPO BDDS product catalogue (product 3 by default), unwraps nested tar/gz/zip containers entirely in-stream, parses each <exchange-document> node, and writes batched rows to a Parquet file. A bbolt checkpoint database enables crash-resume.

process-hupd — download HUPD all-years.tar to disk

epo-process-hupd                     # devenv
./bin/epo-processor process-hupd \   # plain Go
    --config config/config.yaml
# config.yaml must set: pipeline.keep_extracted: true

Streams the HUPD HuggingFace tarball and materialises each entry under pipeline.extracted_dir. Uses the same pipeline with NoopExtractor + NoopSink. Fails if no retention flag is set.

analyze — build the EPO ↔ HUPD linked Parquet dataset

epo-analyze \                        # devenv
    --epo        data/epo.parquet \
    --hupd-dir   /data/hupd/hupd_all-years \
    --dataset    data/epo_hupd_dataset.parquet

Builds a Parquet dataset of EPO patents linked to HUPD records via direct citation or the simple family graph, annotated with EPO citation-category codes (X, Y, A, …). Each row is a DatasetRecord ready for downstream ML. Overlap statistics are also printed to stdout as a JSON summary.

Configuration

All subcommands share a single YAML config file (--config flag). Every key is also settable via environment variable:

EPO_PROCESSOR_PIPELINE_CHECKPOINT_DB=/var/lib/epo/state.db
EPO_PROCESSOR_TELEMETRY_ENABLED=true

See config/config.yaml for the annotated full schema.

Installation

go install github.com/Qubut/epo-processor/cmd/epo_processor@latest

Or with devenv (reproduces the exact toolchain used in CI):

cd packages/epo_processor && devenv shell && epo-build

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL