Document Types Classification System¶
The Danish Parliamentary OData API employs a comprehensive document type classification system with 28 distinct categories that represent the full spectrum of parliamentary documentation. This classification system enables precise categorization and retrieval of legislative documents across all stages of the parliamentary process.
Overview¶
Document types in the Danish Parliament API serve as the primary classification mechanism for organizing the vast collection of parliamentary documents. Each document type represents a specific category of parliamentary communication, legislative process documentation, or administrative record.
Key Statistics: - 28 distinct document types covering all parliamentary activities - 5 document status levels tracking document lifecycle - Perfect referential integrity linking documents to cases, actors, and processes - Multilingual support with proper UTF-8 encoding for Danish characters
Complete Document Type Enumeration¶
The following table provides a complete reference of all 28 document types available in the Danish Parliamentary system:
| ID | Danish Name | English Translation | Category | Description |
|---|---|---|---|---|
| 1 | Redegørelse | Report/Statement | Executive | Formal government reports and statements |
| 2 | Stedfortræderbrev | Deputy Letter | Administrative | Letters designating parliamentary substitutes |
| 3 | Ministerredegørelse | Ministerial Statement | Executive | Official statements from government ministers |
| 4 | Aktstykke | State Document | Financial | Financial appropriation and budget documents |
| 5 | Forespørgsel | Inquiry | Legislative | Formal parliamentary inquiries |
| 6 | EU-note | EU Note | EU Affairs | European Union related documentation |
| 7 | Fremsættelsestale | Presentation Speech | Legislative | Speeches introducing legislative proposals |
| 8 | Referat | Minutes | Administrative | Meeting minutes and proceedings |
| 9 | Formandsmeddelelse | Speaker's Message | Administrative | Communications from the Parliamentary Speaker |
| 10 | Notat | Note | Administrative | General notes and memoranda |
| 11 | Statsrevisorbemærkning | Auditor General Remark | Oversight | Comments from the National Audit Office |
| 12 | Bilag | Appendix | Supporting | Supporting documents and appendices |
| 13 | Spørgsmål | Question | Parliamentary Control | Parliamentary questions to government |
| 14 | Indstilling til EB | Recommendation to EB | Committee | European Affairs Committee recommendations |
| 15 | Beretning | Report | Committee | Committee reports and findings |
| 16 | § 20-spørgsmål | Section 20 Question | Parliamentary Control | Urgent parliamentary questions under Section 20 |
| 17 | Svar | Answer | Parliamentary Control | Government responses to parliamentary questions |
| 18 | Kommissionsforslag | Commission Proposal | EU Affairs | European Commission legislative proposals |
| 19 | Grundnotat | Basic Note | Administrative | Foundational notes and background documents |
| 20 | Rådsmødedokument | Council Meeting Document | EU Affairs | Documents from EU Council meetings |
| 21 | Forslagstekst | Proposal Text | Legislative | Text of legislative proposals |
| 22 | Dagsorden | Agenda | Administrative | Meeting agendas and schedules |
| 23 | Tekstdel | Text Section | Legislative | Sections or parts of larger legislative texts |
| 24 | Orlovsansøgning | Leave Application | Administrative | Applications for parliamentary leave of absence |
| 25 | Ugeplan | Weekly Schedule | Administrative | Weekly parliamentary schedules |
| 26 | Andet | Other | Miscellaneous | Documents not fitting other categories |
| 27 | Info-note | Information Note | Administrative | Informational notes and briefings |
| 28 | Godkendelsesindstilling | Approval Recommendation | Committee | Committee recommendations for approval |
Document Type Categories¶
The 28 document types can be organized into seven functional categories:
Legislative Documents (7 types)¶
Documents directly involved in the legislative process: - Forespørgsel (Inquiry) - Formal parliamentary inquiries - Fremsættelsestale (Presentation Speech) - Legislative proposal presentations - Forslagstekst (Proposal Text) - Actual legislative proposal text - Tekstdel (Text Section) - Parts of legislative documents - Bilag (Appendix) - Supporting legislative materials - Kommissionsforslag (Commission Proposal) - EU legislative proposals - Godkendelsesindstilling (Approval Recommendation) - Committee approvals
Parliamentary Control (3 types)¶
Documents used for government oversight: - Spørgsmål (Question) - Standard parliamentary questions - § 20-spørgsmål (Section 20 Question) - Urgent questions - Svar (Answer) - Government responses
Executive Communications (2 types)¶
Official government communications: - Redegørelse (Report/Statement) - Government reports - Ministerredegørelse (Ministerial Statement) - Minister statements
Committee Work (3 types)¶
Documents produced by parliamentary committees: - Beretning (Report) - Committee reports - Indstilling til EB (Recommendation to EB) - European Affairs recommendations - Godkendelsesindstilling (Approval Recommendation) - Committee approvals
EU Affairs (3 types)¶
European Union related documentation: - EU-note (EU Note) - EU related notes - Kommissionsforslag (Commission Proposal) - EU Commission proposals - Rådsmødedokument (Council Meeting Document) - EU Council documents
Administrative Documents (8 types)¶
Parliamentary administration and procedures: - Stedfortræderbrev (Deputy Letter) - Substitute designations - Referat (Minutes) - Meeting minutes - Formandsmeddelelse (Speaker's Message) - Speaker communications - Notat (Note) - General notes - Grundnotat (Basic Note) - Background documents - Dagsorden (Agenda) - Meeting agendas - Orlovsansøgning (Leave Application) - Leave requests - Ugeplan (Weekly Schedule) - Weekly schedules - Info-note (Information Note) - Information briefings
Oversight and Control (2 types)¶
External oversight documents: - Statsrevisorbemærkning (Auditor General Remark) - Audit comments - Aktstykke (State Document) - Financial documents
Document Status Classifications¶
Documents progress through a five-stage status system:
| ID | Status | Danish Name | Description |
|---|---|---|---|
| 1 | Final | Endeligt | Document is final and published |
| 2 | Locked | Låst | Document is locked for editing |
| 3 | Distributed | Omdelt | Document has been distributed |
| 4 | Withdrawn | Tilbagetaget | Document has been withdrawn |
| 5 | Provisional | Foreløbigt | Document is in draft/preliminary state |
Document Lifecycle and Type Transitions¶
Standard Document Flow¶
graph LR
A[Foreløbigt] --> B[Låst]
B --> C[Omdelt]
C --> D[Endeligt]
D --> E[Tilbagetaget]
Legislative Document Lifecycle¶
- Forslagstekst (Proposal Text) - Initial legislative proposal
- Fremsættelsestale (Presentation Speech) - Formal presentation
- Beretning (Report) - Committee examination
- Bilag (Appendix) - Supporting materials during process
- Godkendelsesindstilling (Approval Recommendation) - Final committee recommendation
Parliamentary Question Process¶
- Spørgsmål (Question) or § 20-spørgsmål (Urgent Question) - Initial question
- Svar (Answer) - Government response
- Bilag (Appendix) - Additional supporting materials if needed
Legislative Document Hierarchy¶
The Danish Parliament maintains a sophisticated document hierarchy that reflects the legislative process:
Primary Legislative Documents¶
- Forslagstekst - The core legislative proposal
- Fremsættelsestale - Official presentation of the proposal
- Beretning - Committee examination and recommendations
Supporting Documents¶
- Bilag - Appendices and supporting materials
- Notat - Explanatory notes and briefings
- Grundnotat - Background analysis
Procedural Documents¶
- Dagsorden - Scheduling and procedure
- Referat - Official proceedings record
- Formandsmeddelelse - Procedural guidance
Publication Patterns by Document Type¶
High-Volume Document Types¶
Daily Publications: - Spørgsmål (Questions) - 50-100 per day during active periods - Svar (Answers) - 30-80 per day - Bilag (Appendices) - 20-50 per day
Weekly Publications: - Beretning (Reports) - 5-15 per week - Dagsorden (Agendas) - 3-8 per week - Referat (Minutes) - 2-5 per week
Seasonal Document Patterns¶
High Activity Periods (September-December, January-June): - Legislative proposals and reports peak - Committee activity increases - Parliamentary questions surge
Low Activity Periods (July-August): - Minimal legislative activity - Reduced committee work - Administrative documents continue
Historical Document Type Evolution¶
Pre-Digital Era (1995-2005)¶
- Limited document types
- Basic categorization system
- Manual classification processes
Digital Transition (2005-2015)¶
- Expanded document type system
- Introduction of EU-specific categories
- Enhanced classification granularity
Modern System (2015-Present)¶
- Current 28-type system established
- Full digital integration
- Real-time classification and publishing
API Querying Strategies for Document Types¶
Basic Document Type Queries¶
# Get all document types
curl "https://oda.ft.dk/api/Dokumenttype"
# Get documents of specific type (Questions)
curl "https://oda.ft.dk/api/Dokument?\%24filter=typeid%20eq%2013"
# Get document with type information
curl "https://oda.ft.dk/api/Dokument?\%24expand=Dokumenttype&\%24top=5"
Advanced Document Analysis Queries¶
// JavaScript example: Analyze document type distribution
async function analyzeDocumentTypes() {
// Get all document types
const typesResponse = await fetch('https://oda.ft.dk/api/Dokumenttype');
const types = await typesResponse.json();
const analysis = [];
for (const type of types.value) {
// Count documents of each type
const countResponse = await fetch(
`https://oda.ft.dk/api/Dokument?$filter=typeid eq ${type.id}&$inlinecount=allpages&$top=1`
);
const countData = await countResponse.json();
analysis.push({
id: type.id,
name: type.type,
count: countData['odata.count']
});
}
return analysis.sort((a, b) => b.count - a.count);
}
Document Flow Analysis¶
# Python example: Track document lifecycle
import requests
import json
from datetime import datetime, timedelta
class DocumentFlowAnalyzer:
def __init__(self):
self.base_url = "https://oda.ft.dk/api"
def get_document_by_case(self, case_id):
"""Get all documents related to a specific case"""
url = f"{self.base_url}/Dokument"
params = {
'$filter': f'sagid eq {case_id}',
'$expand': 'Dokumenttype,Dokumentstatus',
'$orderby': 'dato'
}
response = requests.get(url, params=params)
return response.json()
def analyze_document_progression(self, case_id):
"""Analyze how documents progress through a case"""
documents = self.get_document_by_case(case_id)
progression = []
for doc in documents['value']:
progression.append({
'date': doc['dato'],
'type': doc['Dokumenttype']['type'],
'status': doc['Dokumentstatus']['status'],
'title': doc['titel']
})
return progression
def get_legislative_document_flow(self):
"""Get typical flow of legislative documents"""
legislative_types = [21, 7, 15, 28] # Forslagstekst, Fremsættelsestale, Beretning, Godkendelsesindstilling
flows = {}
for type_id in legislative_types:
url = f"{self.base_url}/Dokument"
params = {
'$filter': f'typeid eq {type_id}',
'$expand': 'Dokumenttype',
'$top': 100,
'$orderby': 'dato desc'
}
response = requests.get(url, params=params)
flows[type_id] = response.json()
return flows
# Usage example
analyzer = DocumentFlowAnalyzer()
case_flow = analyzer.analyze_document_progression(150000)
legislative_flow = analyzer.get_legislative_document_flow()
Document Type Statistical Analysis¶
# Get document count by type (requires multiple queries)
for i in {1..28}; do
count=$(curl -s "https://oda.ft.dk/api/Dokument?\%24filter=typeid%20eq%20$i&\%24inlinecount=allpages&\%24top=1" | jq -r '."odata.count"')
type_name=$(curl -s "https://oda.ft.dk/api/Dokumenttype($i)" | jq -r '.type')
echo "$i,$type_name,$count"
done
Cross-References with Parliamentary Entities¶
Document-Case Relationships¶
Documents are linked to legislative cases through multiple relationship types:
# Get case documents with roles
curl "https://oda.ft.dk/api/SagDokument?\%24expand=Dokument/Dokumenttype,SagDokumentRolle&\%24top=10"
Key Document-Case Roles: - Hoveddokument (Main Document) - Primary case document - Bilagsdokument (Appendix Document) - Supporting materials - Ændringsdokument (Amendment Document) - Modifications to proposals
Document-Actor Relationships¶
Documents connect to political actors through the DokumentAktør entity:
# Get document authors and recipients
curl "https://oda.ft.dk/api/DokumentAktør?\%24expand=Dokument/Dokumenttype,Aktør,DokumentAktørRolle&\%24top=10"
Key Document-Actor Roles: - Afsender (Sender) - Document originator - Modtager (Recipient) - Document addressee - Forslagsstiller (Proposer) - Legislative proposal author - Minister - Government minister involved
Document-Meeting Integration¶
Documents are connected to parliamentary meetings and agenda items:
# Get meeting documents
curl "https://oda.ft.dk/api/DagsordenspunktDokument?\%24expand=Dokument/Dokumenttype,Dagsordenspunkt&\%24top=10"
Document Analysis and Categorization Applications¶
Content Analysis by Document Type¶
Different document types require different analytical approaches:
Legislative Documents Analysis¶
- Forslagstekst - Text analysis for policy content
- Beretning - Committee recommendation patterns
- Bilag - Supporting evidence and data
Parliamentary Control Analysis¶
- Spørgsmål/Svar - Question-answer pair analysis
- § 20-spørgsmål - Urgent issue identification
- Statsrevisorbemærkning - Financial oversight patterns
Administrative Pattern Analysis¶
- Dagsorden - Meeting schedule and topic trends
- Referat - Procedural and discussion analysis
- Formandsmeddelelse - Parliamentary management decisions
Document Network Analysis¶
# Example: Document relationship network analysis
import networkx as nx
import requests
def build_document_network(case_id):
"""Build network graph of documents in a case"""
G = nx.Graph()
# Get case documents
response = requests.get(
f"https://oda.ft.dk/api/SagDokument",
params={
'$filter': f'sagid eq {case_id}',
'$expand': 'Dokument/Dokumenttype,SagDokumentRolle'
}
)
documents = response.json()['value']
for doc_rel in documents:
doc_id = doc_rel['Dokument']['id']
doc_type = doc_rel['Dokument']['Dokumenttype']['type']
role = doc_rel['SagDokumentRolle']['rolle']
G.add_node(doc_id, type=doc_type, role=role)
return G
Document Timeline Analysis¶
def analyze_document_timeline(case_id):
"""Analyze temporal patterns in document publication"""
response = requests.get(
f"https://oda.ft.dk/api/Dokument",
params={
'$filter': f'sagid eq {case_id}',
'$expand': 'Dokumenttype',
'$orderby': 'dato'
}
)
documents = response.json()['value']
timeline = []
for doc in documents:
timeline.append({
'date': doc['dato'],
'type': doc['Dokumenttype']['type'],
'title': doc['titel'],
'days_since_start': 0 # Calculate based on first document
})
# Calculate time differences
if timeline:
start_date = datetime.fromisoformat(timeline[0]['date'])
for item in timeline:
doc_date = datetime.fromisoformat(item['date'])
item['days_since_start'] = (doc_date - start_date).days
return timeline
Best Practices for Document Classification¶
Query Optimization¶
- Use specific type filters to reduce result sets
- Expand related entities in single requests when possible
- Order by date for temporal analysis
- Use inlinecount for statistical analysis
Document Type Selection Strategy¶
- Identify your use case - Legislative tracking, oversight analysis, administrative monitoring
- Choose appropriate types - Focus on 3-5 relevant types rather than all 28
- Consider relationships - Include supporting document types (Bilag, Notat)
- Account for workflow - Track document progression through types
Performance Considerations¶
- High-volume types (Spørgsmål, Svar, Bilag) require pagination
- Historical queries may have large result sets
- Multi-type analysis requires multiple API calls
- Real-time monitoring should focus on recent dates
Conclusion¶
The Danish Parliamentary document type classification system provides a comprehensive framework for organizing and accessing parliamentary documentation. With 28 distinct types covering all aspects of parliamentary work, from legislative proposals to administrative communications, this system enables sophisticated analysis and monitoring of democratic processes.
Understanding document types is essential for: - Efficient API querying and data retrieval - Accurate legislative process tracking - Comprehensive parliamentary oversight analysis - Historical trend identification and analysis - Cross-reference analysis between documents, cases, and actors
The classification system's granularity and consistency make it one of the most sophisticated parliamentary document taxonomies available through a public API, supporting both simple document retrieval and complex analytical applications.