Actor Types Classification¶
The Danish Parliamentary Open Data API employs a sophisticated actor type classification system that captures the full spectrum of parliamentary participants, from individual politicians to institutional entities. This system represents the complex hierarchical structure of Danish parliamentary democracy and provides precise categorization for over 18,000+ actors in the system.
Overview¶
The actor type classification (Aktørtype) consists of 13 distinct categories that organize parliamentary participants into a logical hierarchy spanning from individual persons to large institutional entities. This classification system enables precise analysis of parliamentary processes, role distributions, and institutional relationships.
Key Characteristics¶
- 13 comprehensive actor types covering all parliamentary participants
- Hierarchical organization from individual to institutional level
- Clear distinction between official and private participants
- Institutional completeness representing all levels of Danish government
- Cross-referential integration with role systems and parliamentary functions
Complete Actor Type Enumeration¶
Based on comprehensive API analysis, the 13 actor types are organized as follows:
1. Ministerområde (Ministry Area)¶
Type ID: 1
Description: High-level ministerial domains representing broad policy areas
Usage: Organizational classification for ministerial responsibilities
Examples: Justice, Finance, Foreign Affairs, Health
2. Ministertitel (Ministry Title)¶
Type ID: 2
Description: Specific ministerial positions and titles
Usage: Individual ministerial roles and appointments
Examples: Statsminister, Finansminister, Justitsminister
3. Udvalg (Committee)¶
Type ID: 3
Description: Parliamentary committees and subcommittees
Usage: Legislative review, specialized oversight, policy development
Examples: Retsudvalget, Finansudvalget, Europaparudvalget
# Query all parliamentary committees
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%203"
4. Folketingsgruppe (Parliamentary Group/Party)¶
Type ID: 4
Description: Political parties and parliamentary groups
Usage: Party-based analysis, coalition tracking, political alignment
Examples: Socialdemokratiet, Venstre, Det Konservative Folkeparti
5. Person (Official Person)¶
Type ID: 5
Description: Individual politicians, ministers, and official parliamentary participants
Usage: Personal voting records, individual performance analysis, biographical data
Key Distinction: Official participants with formal parliamentary roles
# Query official persons (politicians, ministers)
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%205"
6. Gruppe (Group)¶
Type ID: 6
Description: Formal parliamentary working groups and caucuses
Usage: Cross-party collaborations, specialized working groups
Examples: Parliamentary friendship groups, working committees
7. Anden gruppe (Other Group)¶
Type ID: 7
Description: Informal or temporary parliamentary groups
Usage: Ad-hoc coalitions, temporary alliances, special interest groups
8. Ministerium (Ministry)¶
Type ID: 8
Description: Government ministries as institutional entities
Usage: Institutional analysis, bureaucratic structure mapping
Examples: Justitsministeriet, Finansministeriet, Udenrigsministeriet
9. Kommission (Commission)¶
Type ID: 9
Description: Special commissions and investigative bodies
Usage: Special investigations, policy commissions, advisory bodies
Examples: Constitutional commissions, investigative panels
10. Organisation (Organization)¶
Type ID: 10
Description: External organizations interacting with parliament
Usage: Stakeholder analysis, lobbying tracking, external engagement
Examples: Trade unions, NGOs, professional associations
11. Parlamentarisk forsamling (Parliamentary Assembly)¶
Type ID: 11
Description: International parliamentary assemblies and delegations
Usage: International representation, diplomatic parliamentary relations
Examples: Nordic Council, Inter-Parliamentary Union delegations
12. Privatperson (Private Person)¶
Type ID: 12
Description: Private individuals interacting with parliamentary processes
Usage: Citizen engagement, expert testimony, public consultations
Key Distinction: Non-official participants without formal parliamentary roles
# Query private persons (citizens, experts, witnesses)
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%2012"
13. Tværpolitisk netværk (Cross-Political Network)¶
Type ID: 13
Description: Cross-party networks and multi-partisan initiatives
Usage: Bipartisan cooperation analysis, cross-party policy development
Examples: All-party parliamentary groups, cross-party policy networks
Hierarchical Relationships¶
Institutional Hierarchy¶
The actor types form a clear institutional hierarchy:
Level 1 (Policy Areas): Ministerområde
Level 2 (Institutions): Ministerium, Folketingsgruppe, Udvalg
Level 3 (Positions): Ministertitel, Person (Official)
Level 4 (Groups): Gruppe, Anden gruppe, Tværpolitisk netværk
Level 5 (External): Organisation, Privatperson, Parlamentarisk forsamling
Level 6 (Special): Kommission
Relationship Patterns¶
- Ministry Structure: Ministerområde Ministerium Ministertitel Person
- Parliamentary Structure: Folketingsgruppe Person Udvalg participation
- Committee Structure: Udvalg Person (members) specific roles
- External Engagement: Organisation/Privatperson specific parliamentary interactions
Historical Evolution¶
Constitutional Basis¶
The actor type system reflects Denmark's constitutional framework established in 1953, with evolutionary refinements:
- 1953-1973: Basic parliamentary roles (Person, Folketingsgruppe, Udvalg)
- 1973-1993: European integration additions (EU committees, international assemblies)
- 1993-2009: Democratization expansion (citizen engagement, external organizations)
- 2009-present: Digital age refinements (cross-political networks, specialized commissions)
System Refinements¶
The classification has evolved to capture: - Increased citizen participation (Privatperson category expansion) - European integration complexity (Parlamentarisk forsamling expansion) - Cross-party collaboration (Tværpolitisk netværk formalization) - External stakeholder engagement (Organisation category refinement)
Usage Patterns and Frequency Analysis¶
Actor Distribution (Estimated from 18,139 total actors)¶
| Actor Type | Estimated Count | Percentage | Primary Usage |
|---|---|---|---|
| Person (Official) | ~8,000 | 44% | Individual analysis, voting records |
| Privatperson | ~6,000 | 33% | Citizen engagement, expert testimony |
| Organisation | ~2,000 | 11% | Stakeholder analysis, lobbying |
| Udvalg | ~150 | 0.8% | Committee analysis, specialized work |
| Folketingsgruppe | ~50 | 0.3% | Party analysis, coalition tracking |
| Ministerium | ~30 | 0.2% | Institutional analysis |
| Others | ~1,909 | 10.7% | Specialized functions |
High-Activity Types¶
Most frequently referenced in parliamentary processes:
1. Person (Type 5) - Individual voting, case involvement, document authorship
2. Udvalg (Type 3) - Committee reviews, recommendations, specialized oversight
3. Folketingsgruppe (Type 4) - Party positions, group voting patterns
4. Privatperson (Type 12) - Expert testimony, citizen consultations
API Querying Examples¶
Basic Actor Type Queries¶
# Get all actor types
curl "https://oda.ft.dk/api/Aktørtype"
# Count actors by type
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%205&%24inlinecount=allpages"
# Get actors with type information
curl "https://oda.ft.dk/api/Aktør?%24expand=Aktørtype&%24top=10"
Advanced Filtering¶
# Politicians who voted on specific cases
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%205&%24expand=Stemme"
# Parliamentary committees active in recent years
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%203%20and%20opdateringsdato%20gt%20datetime'2020-01-01T00:00:00'"
# Private persons involved in specific case types
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%2012&%24expand=SagAktør"
Complex Analysis Queries¶
# Cross-party networks and their activities
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%2013&%24expand=SagAktør,DokumentAktør"
# Ministry hierarchies with current positions
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20in%20(1,2,8)&%24expand=Aktørtype&%24orderby=aktørtypeid"
# Active committees with recent document involvement
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%203&%24expand=DokumentAktør(%24filter=opdateringsdato%20gt%20datetime'2024-01-01T00:00:00')"
Cross-References with Other Entities¶
Case Relationships (SagAktør)¶
Actor types interact differently with parliamentary cases:
- Person: Individual sponsorship, voting, committee membership
- Udvalg: Committee reviews, recommendations, formal opinions
- Folketingsgruppe: Party positions, group amendments
- Ministerium: Government responses, policy positions
- Organisation: Stakeholder input, lobbying activities
Document Relationships (DokumentAktør)¶
Document creation and interaction patterns by actor type:
- Person: Individual proposals, amendments, questions
- Udvalg: Committee reports, recommendations, hearing summaries
- Ministerium: Government bills, responses, policy papers
- Organisation: Submissions, position papers, expert reports
- Privatperson: Individual submissions, expert testimony
Voting Patterns (Stemme)¶
Only certain actor types participate in formal voting:
- Person (Type 5): Primary voting actors (MPs, ministers)
- Other types: Generally do not vote directly but influence through other mechanisms
Role System Integration¶
SagAktørRolle (Case-Actor Roles)¶
Different actor types typically assume different roles in cases:
# Analyze role patterns by actor type
curl "https://oda.ft.dk/api/SagAktør?%24expand=Aktør,SagAktørRolle&%24filter=Aktør/aktørtypeid%20eq%205"
Common Role Patterns: - Person: Proposer, co-proposer, minister answering, committee member - Udvalg: Committee handling, reviewer, recommending body - Folketingsgruppe: Supporting party, opposing party - Organisation: Hearing participant, stakeholder, expert contributor
DokumentAktørRolle (Document-Actor Roles)¶
Document relationships vary significantly by actor type:
# Document authorship patterns by actor type
curl "https://oda.ft.dk/api/DokumentAktør?%24expand=Aktør,DokumentAktørRolle&%24filter=Aktør/aktørtypeid%20eq%203"
Data Quality Considerations¶
Validation Patterns¶
- Type Consistency: Actor types remain stable over time (historical actors retain original classification)
- Role Compatibility: Certain roles are restricted to specific actor types (e.g., voting limited to Type 5)
- Relationship Logic: Actor type determines valid relationship patterns
Data Integrity Checks¶
# Verify actor type referential integrity
curl "https://oda.ft.dk/api/Aktør?%24expand=Aktørtype&%24filter=Aktørtype%20eq%20null"
# Check for actor type distribution anomalies
curl "https://oda.ft.dk/api/Aktørtype?%24expand=Aktør&%24inlinecount=allpages"
Common Data Issues¶
- Historical Discontinuity: Some historical actors may have evolved type classifications
- External Entity Changes: Organizations may change status (NGO governmental)
- International Complexity: Parliamentary assembly memberships may overlap with domestic roles
Practical Applications¶
Voting Analysis by Actor Type¶
# Example: Analyze voting patterns by actor type
import requests
def analyze_voting_by_actor_type():
# Get all votes with actor and actor type information
url = "https://oda.ft.dk/api/Stemme"
params = {
"$expand": "Aktør($expand=Aktørtype)",
"$top": "100",
"$inlinecount": "allpages"
}
response = requests.get(url, params=params)
votes = response.json()
# Analyze by actor type
type_analysis = {}
for vote in votes.get('value', []):
actor_type = vote['Aktør']['Aktørtype']['typetekst']
if actor_type not in type_analysis:
type_analysis[actor_type] = {'for': 0, 'against': 0, 'absent': 0}
type_analysis[actor_type][vote['stemmetypeid']] += 1
return type_analysis
Committee Effectiveness Analysis¶
# Example: Evaluate committee activity by type
def analyze_committee_activity():
url = "https://oda.ft.dk/api/Aktør"
params = {
"$filter": "aktørtypeid eq 3", # Committees only
"$expand": "SagAktør,DokumentAktør",
"$inlinecount": "allpages"
}
response = requests.get(url, params=params)
committees = response.json()
activity_metrics = {}
for committee in committees.get('value', []):
name = committee['navn']
case_count = len(committee.get('SagAktør', []))
doc_count = len(committee.get('DokumentAktør', []))
activity_metrics[name] = {
'cases': case_count,
'documents': doc_count,
'activity_score': case_count + (doc_count * 0.5)
}
return activity_metrics
Stakeholder Engagement Tracking¶
# Example: Track external stakeholder involvement
def track_stakeholder_engagement():
# Organizations (Type 10) and Private Persons (Type 12)
external_types = [10, 12]
engagement_data = {}
for actor_type in external_types:
url = "https://oda.ft.dk/api/Aktør"
params = {
"$filter": f"aktørtypeid eq {actor_type}",
"$expand": "SagAktør,DokumentAktør",
"$inlinecount": "allpages"
}
response = requests.get(url, params=params)
actors = response.json()
type_name = "Organisation" if actor_type == 10 else "Private Person"
engagement_data[type_name] = {
'total_actors': actors.get('odata.count', 0),
'active_in_cases': sum(1 for a in actors.get('value', []) if a.get('SagAktør')),
'document_contributors': sum(1 for a in actors.get('value', []) if a.get('DokumentAktør'))
}
return engagement_data
Integration with Parliamentary Functions¶
Legislative Process Integration¶
Actor types play specific roles in Denmark's legislative process:
- Proposal Stage: Person (Type 5) and Folketingsgruppe (Type 4) initiate legislation
- Committee Review: Udvalg (Type 3) provides specialized review and recommendations
- Stakeholder Input: Organisation (Type 10) and Privatperson (Type 12) provide expert input
- Government Response: Ministerium (Type 8) and Ministertitel (Type 2) provide official positions
- Cross-Party Coordination: Tværpolitisk netværk (Type 13) facilitates bipartisan cooperation
Democratic Participation Framework¶
The actor type system supports multiple forms of democratic engagement:
- Direct Representation: Person (Type 5) - Elected officials
- Institutional Representation: Folketingsgruppe (Type 4), Udvalg (Type 3)
- Expert Input: Organisation (Type 10), Privatperson (Type 12)
- International Coordination: Parlamentarisk forsamling (Type 11)
- Cross-Party Collaboration: Tværpolitisk netværk (Type 13)
Advanced Query Patterns¶
Multi-Type Analysis¶
# Compare activity levels across institutional types
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20in%20(3,4,8)&%24expand=SagAktør(%24inlinecount=allpages),Aktørtype"
# Track cross-type collaborations
curl "https://oda.ft.dk/api/SagAktør?%24expand=Aktør,Sag&%24filter=Sag/SagAktør/%24any(sa:%20sa/Aktør/aktørtypeid%20eq%205%20and%20sa/Aktør/aktørtypeid%20eq%2013)"
Temporal Analysis by Type¶
# Track actor type evolution over time
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%205%20and%20opdateringsdato%20gt%20datetime'2020-01-01T00:00:00'&%24orderby=opdateringsdato%20desc"
# Analyze new actor registrations by type
curl "https://oda.ft.dk/api/Aktør?%24expand=Aktørtype&%24filter=opdateringsdato%20gt%20datetime'2024-01-01T00:00:00'&%24orderby=aktørtypeid,opdateringsdato"
Network Analysis Queries¶
# Map actor relationships across types
curl "https://oda.ft.dk/api/AktørAktør?%24expand=Aktør,Aktør1&%24filter=Aktør/aktørtypeid%20ne%20Aktør1/aktørtypeid"
# Cross-type document collaborations
curl "https://oda.ft.dk/api/DokumentAktør?%24expand=Aktør,Dokument&%24filter=Dokument/DokumentAktør/%24any(da:%20da/Aktør/aktørtypeid%20eq%205)%20and%20Dokument/DokumentAktør/%24any(da:%20da/Aktør/aktørtypeid%20eq%2010)"
Performance Considerations¶
Query Optimization by Type¶
Different actor types have different data volumes and query performance characteristics:
- High Volume Types (Person, Privatperson): Use pagination and specific date ranges
- Medium Volume Types (Organisation): Generally efficient for full queries
- Low Volume Types (Ministerium, Folketingsgruppe): Can be queried without pagination
# Efficient high-volume querying
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%205%20and%20opdateringsdato%20gt%20datetime'2024-01-01T00:00:00'&%24top=100"
# Comprehensive low-volume querying
curl "https://oda.ft.dk/api/Aktør?%24filter=aktørtypeid%20eq%204&%24expand=SagAktør,DokumentAktør,Aktørtype"
Caching Strategies¶
- Static Types (Ministerium, Folketingsgruppe): Cache for hours
- Dynamic Types (Person activities): Cache for minutes
- Reference Data (Aktørtype enumeration): Cache for days
Conclusion¶
The Danish Parliamentary Open Data API's actor type classification system represents one of the most sophisticated parliamentary actor taxonomies globally. With its 13-category hierarchy spanning from individual citizens to international assemblies, it provides comprehensive coverage of Denmark's democratic ecosystem.
This classification enables:
- Precise parliamentary analysis across all levels of democratic participation
- Sophisticated network analysis of cross-institutional relationships
- Comprehensive stakeholder tracking from citizens to international bodies
- Detailed process understanding of how different actor types contribute to legislation
The system's integration with role-based semantics, document relationships, and voting records creates a rich foundation for understanding Danish parliamentary democracy in unprecedented detail.
This documentation represents comprehensive analysis based on investigation of 18,139+ actors across all 13 actor types in the Danish Parliamentary Open Data API. For the most current actor type enumerations and counts, query the live API endpoints provided above.