CoolFace
Datasetpublic

Maathis-com/ohada-actes-uniformes

OHADA Actes Uniformes — Legislative Knowledge Graph Dataset Description A structured, article-level corpus of all 9 OHADA Actes Uniformes (Uniform Acts) — the harmonized business laws that govern commercial activity across 17 African member states. The dataset contains 3,126 articles organized in a knowledge graph with 19,800 edges capturing the internal structure of the legislation, cross-references between laws, and a bridge layer connecting statutory provisions… See the full description on the dataset page: https://huggingface.co/datasets/Maathis-com/ohada-actes-uniformes.

sourceHugging Facecc-by-4.0updated 6mo agoView on Hugging Face
0likes53downloads
Dataset Card

OHADA Actes Uniformes — Legislative Knowledge Graph

Dataset Description

A structured, article-level corpus of all 9 OHADA Actes Uniformes (Uniform Acts) — the harmonized business laws that govern commercial activity across 17 African member states. The dataset contains 3,126 articles organized in a knowledge graph with 19,800 edges capturing the internal structure of the legislation, cross-references between laws, and a bridge layer connecting statutory provisions to court decisions.

[image]

This is the legislative layer of the OHADA Legal Knowledge System, designed to sit beneath the OHADA-CCJA Court Decisions Corpus (case law) and the OHADA-CCJA Legal Knowledge Graph (case-level relations). Together, the three datasets form a complete, interlinked legal knowledge base spanning from statutory text to judicial application.

Why This Dataset Matters

Legal AI systems need access to the law itself — not just court decisions. Yet no structured, ML-ready dataset of OHADA legislation has previously existed. Researchers working on legal retrieval, question answering, or reasoning over African law had no way to ground model outputs in the actual statutory text. This dataset addresses that gap by providing:

  • —The first article-level corpus of all 9 OHADA Uniform Acts, extracted from official Journal Officiel PDFs
  • —A full legislative graph with internal cross-references between articles, hierarchical structure (Livre → Titre → Chapitre → Article), and cross-Acte citations
  • —A bridge to case law — 15,380 edges connecting CCJA court decisions to the specific statutory provisions they apply, enabling GraphRAG across the full legal stack
  • —GraphRAG-ready chunking — each article is a self-contained document with hierarchy metadata, designed for retrieval-augmented generation

The Three-Layer OHADA Legal Knowledge System

LayerDatasetNodesEdgesContent
LegislationThis dataset3,17619,800Statutory text (Actes Uniformes)
Case Lawohada-ccja-corpus——4,059 court decisions (tabular)
Case Graphohada-ccja-graph11,13133,408Case-level knowledge graph
BridgeIncluded here—15,380Case → applies → Article

Combined: 14,307 nodes and 53,208 edges across the complete system.

Supported Tasks

TaskDescriptionRelevant Files
Legal Question AnsweringRetrieve and reason over statutory provisionsgraphrag_corpus.parquet + graph CSVs
GraphRAGRetrieval-augmented generation grounded in legislationgraphrag_corpus.parquet
Legal Article RetrievalGiven a case or query, find the applicable statutory articlesBridge edges + article nodes
Cross-Reference PredictionPredict which articles cite each otherarticle_references_article.csv
Legislative Structure ClassificationClassify articles by Acte Uniforme or legal domainArticle nodes with hierarchy metadata
Statute-to-Case LinkingConnect statutory provisions to judicial interpretationsBridge edges

Languages

French (fr) — the working language of OHADA.

Dataset Structure

The 9 Actes Uniformes

CodeFull NameArticlesAdoptedLocation
AUSCGIESociétés commerciales et GIE1,3922014-01-30Ouagadougou
AUSCOOPSociétés coopératives3972010-12-15Lomé
AUPCProcédures collectives (Insolvency)3712015-09-10Grand-Bassam
AUDCGDroit commercial général3072010-12-15Lomé
AUPSRVERecouvrement et voies d'exécution2421998-04-10Libreville
AUSSûretés (Securities)2282010-12-15Lomé
AUDCIFDroit comptable et information financière1202017-01-26Brazzaville
AUADroit de l'arbitrage382017-11-23Conakry
AUCTMRTransport de marchandises par route312003-03-22Yaoundé

Graph Schema

The graph contains 3,176 nodes across 3 types and 19,800 edges across 4 relation types (plus 15,380 bridge edges to case law).

Node Types
Node TypeCountDescription
Acte Uniforme9The 9 harmonized laws
Article3,126Individual statutory provisions with full text
Hierarchy41Structural divisions (Livre, Titre, Chapitre)
Edge Types
RelationSource → TargetCountDescription
belongs_toArticle → Acte3,126Which Acte Uniforme an article belongs to
referencesArticle → Article1,207Internal cross-references within the same Acte
cross_referencesArticle → Acte87Cross-Acte citations (e.g., insolvency law citing securities law)
case_appliesCase → Article15,380Bridge: CCJA decisions citing specific articles
Cross-Acte Reference Highlights

The 87 cross-Acte references reveal how OHADA laws interconnect:

Source LawTarget LawReferencesRelationship
Insolvency (AUPC)Securities (AUS)18Insolvency proceedings referencing security interests
Commercial Law (AUDCG)Securities (AUS)13Commercial registration referencing pledge mechanisms
Insolvency (AUPC)Enforcement (AUPSRVE)7Collective proceedings referencing execution procedures
Companies (AUSCGIE)Securities (AUS)6Corporate law referencing share pledge provisions
Securities (AUS)Enforcement (AUPSRVE)6Security realization referencing enforcement procedures

File Structure

ohada-actes-uniformes/
├── nodes/
│   ├── acte_uniforme_nodes.csv       # 9 Actes Uniformes with metadata
│   ├── article_nodes.csv             # 3,126 articles with full text + hierarchy
│   └── hierarchy_nodes.csv           # 41 structural divisions
├── edges/
│   ├── article_belongs_to_acte.csv   # 3,126 edges
│   ├── article_references_article.csv # 1,207 internal cross-references
│   ├── article_cross_references_acte.csv # 87 cross-Acte citations
│   └── case_applies_article.csv      # 15,380 bridge edges to CCJA case law
├── graphrag_corpus.parquet           # 3,126 documents for RAG (article text + metadata)
└── README.md

Data Fields

Article Nodes (article_nodes.csv)
FieldTypeDescription
article_idstringUnique ID (e.g., AUSCGIE-Art4, AUA-Artpremier)
acte_codestringParent Acte Uniforme code
article_numberstringArticle number within the Acte
textstringFull text of the article
hierarchy_pathstringStructural position (e.g., Livre 1 > Titre 2 > Chapitre 3)
cross_referenceslistArticle numbers referenced within the text
GraphRAG Corpus (graphrag_corpus.parquet)
FieldTypeDescription
doc_idstringSame as article_id
acte_codestringParent Acte code
acte_namestringFull name of the Acte Uniforme
hierarchystringStructural context for retrieval
textstringArticle text (avg. 620 chars)
cross_refslistReferenced article numbers

Corpus statistics: 3,126 documents, ~1.94M characters total, average chunk size 620 characters.

Dataset Creation

Source Data

All 9 Actes Uniformes were extracted from official OHADA Journal Officiel PDFs, sourced from government legal portals:

  • —Senegal Ministry of Justice (justice.sec.gouv.sn) — AUSCGIE, AUA
  • —Congo Secrétariat Général du Gouvernement (sgg.cg) — AUDCG, AUPC, AUPSRVE, AUSCOOP
  • —Jurisprudence-OHADA.com — AUS, AUCTMR, AUDCIF

These are the current (revised) versions of each Acte Uniforme as of 2026.

Extraction Pipeline

  1. 1.PDF download: Official Journal Officiel PDFs from government legal portals
  2. 2.Text extraction: pdfplumber for text-based PDFs; PyMuPDF + manual transcription for image-based PDFs (AUA)
  3. 3.Article parsing: Regex state machine handling two article formats (Art.N.- and Article N), with hierarchy detection (Livre, Titre, Chapitre, Section)
  4. 4.Cross-reference extraction: French legal citation patterns parsed from article text (e.g., "conformément à l'article 51", "en application des dispositions de l'article 8-1")
  5. 5.Cross-Acte detection: References to other Actes Uniformes identified and linked
  6. 6.Case law bridging: Article citations from the OHADA-CCJA graph dataset matched to extracted legislative articles (586 of 669 cited articles resolved — 87.6% coverage)
  7. 7.Export: Node/edge CSVs for graph ML + Parquet corpus for GraphRAG

The full pipeline is available as a Colab notebook (link in repository).

Known Limitations

  • —AUPSRVE article count (242) is lower than the official count (~335) due to two-column PDF layout causing some article boundaries to merge. A future release will address this with improved column detection.
  • —AUA was extracted from an image-based Journal Officiel PDF requiring manual text verification. All 36 substantive articles (plus Articles 3-1 and 8-1) are included.
  • —The hierarchy_path field captures structural divisions detected by the parser but may miss some levels in PDFs with irregular formatting.
  • —Cross-reference extraction uses pattern matching on French legal citation language. Some implicit references (e.g., "l'alinéa précédent") are not captured.

Ethical Considerations

  • —Public law: All OHADA Actes Uniformes are public legal instruments, freely available through official channels. There are no copyright or access restrictions on the statutory text itself.
  • —Access to justice: By structuring these laws in a machine-readable format, this dataset contributes to the broader goal of improving access to justice in Francophone Africa.
  • —No personal data: Legislative text contains no personal information.
  • —Jurisdictional scope: OHADA Uniform Acts govern business law only. This dataset does not contain criminal law, family law, or constitutional provisions.

Licensing

This dataset is released under CC-BY-4.0. OHADA Actes Uniformes are public legal instruments. The added value of this dataset lies in its article-level structuring, cross-reference extraction, hierarchy annotation, and case law bridging.

Usage

Loading the Graph

python
import pandas as pd

# Load nodes
articles = pd.read_csv("hf://datasets/Maathis-com/ohada-actes-uniformes/nodes/article_nodes.csv")
actes = pd.read_csv("hf://datasets/Maathis-com/ohada-actes-uniformes/nodes/acte_uniforme_nodes.csv")

# Load edges
refs = pd.read_csv("hf://datasets/Maathis-com/ohada-actes-uniformes/edges/article_references_article.csv")
bridge = pd.read_csv("hf://datasets/Maathis-com/ohada-actes-uniformes/edges/case_applies_article.csv")

print(f"Articles: {len(articles)}, Internal refs: {len(refs)}, Case bridges: {len(bridge)}")

Loading for GraphRAG

python
import pandas as pd

corpus = pd.read_parquet("hf://datasets/Maathis-com/ohada-actes-uniformes/graphrag_corpus.parquet")
print(f"Documents: {len(corpus)}, Avg length: {corpus['text'].str.len().mean():.0f} chars")

# Example: retrieve articles from a specific Acte
auscgie = corpus[corpus['acte_code'] == 'AUSCGIE']
print(f"AUSCGIE articles: {len(auscgie)}")

Loading into Neo4j

cypher
// Import Actes Uniformes
LOAD CSV WITH HEADERS FROM 'file:///acte_uniforme_nodes.csv' AS row
CREATE (:ActeUniforme {
  code: row.acte_code,
  name: row.full_name,
  short_name: row.short_name,
  adopted: date(row.adopted)
});

// Import Articles
LOAD CSV WITH HEADERS FROM 'file:///article_nodes.csv' AS row
CREATE (:Article {
  id: row.article_id,
  acte: row.acte_code,
  number: row.article_number,
  text: row.text,
  hierarchy: row.hierarchy_path
});

// Create belongs_to relationships
LOAD CSV WITH HEADERS FROM 'file:///article_belongs_to_acte.csv' AS row
MATCH (a:Article {id: row.article_id})
MATCH (u:ActeUniforme {code: row.acte_code})
CREATE (a)-[:BELONGS_TO]->(u);

// Create cross-reference relationships
LOAD CSV WITH HEADERS FROM 'file:///article_references_article.csv' AS row
MATCH (a:Article {id: row.source_article_id})
MATCH (b:Article {id: row.target_article_id})
CREATE (a)-[:REFERENCES]->(b);

// Bridge to case law (requires ohada-ccja-graph nodes loaded)
LOAD CSV WITH HEADERS FROM 'file:///case_applies_article.csv' AS row
MATCH (c:Case {id: row.case_id})
MATCH (a:Article {id: row.article_id})
CREATE (c)-[:APPLIES]->(a);

Loading as PyTorch Geometric HeteroData

python
import torch
from torch_geometric.data import HeteroData
import pandas as pd

data = HeteroData()

# Load article nodes
articles = pd.read_csv("nodes/article_nodes.csv")
data['article'].num_nodes = len(articles)

# Load edges
refs = pd.read_csv("edges/article_references_article.csv")
# Map article_id to integer indices
id_map = {aid: i for i, aid in enumerate(articles['article_id'])}
src = [id_map[r] for r in refs['source_article_id'] if r in id_map]
dst = [id_map[r] for r in refs['target_article_id'] if r in id_map]
data['article', 'references', 'article'].edge_index = torch.tensor([src, dst])

print(data)

Related Datasets

Together with this legislative dataset, these form the most comprehensive open legal AI resource for Francophone Africa.

Citation

If you use this dataset in your research, please cite:

bibtex
@dataset{ohada_actes_uniformes_2026,
  title={OHADA Actes Uniformes: A Legislative Knowledge Graph for African Legal AI},
  author={Foutse Yuehgoh},
  year={2026},
  publisher={Maathis},
  url={https://huggingface.co/datasets/Maathis-com/ohada-actes-uniformes}
}

Contact

For questions about this dataset, please open an issue on the HuggingFace repository or contact the dataset creator through Maathis.