AgentCore2
Overview
AgentCore2 is a Dublin Core–based application profile for describing agents associated with zines: people, collectives, and organizations acting as creators, contributors, publishers, distributors, and other roles.
AgentCore2:
- Explicitly supports pseudonyms, anonymity, and privacy preferences.
- Accommodates individual creators, collaborative collectives, and formal organizations.
- Provides authority control for zine creators across collections.
- Aligns with FOAF (Friend of a Friend) and Schema.org Person/Organization vocabularies.
The AgentCore2 profile is defined using DC Tabular Application Profiles (DC TAP) for machine readability and targets JSON and JSON-LD as primary exchange formats.
Resource Type
AgentCore2 describes instances of the conceptual resource type Agent:
- Class: zine-agent:Agent
- Typical instances: individual zinesters, collaborative collectives, publishing organizations, distros, presses
Each agent receives one AgentCore2 description, regardless of how many zines they've created. This enables authority control: multiple zine records can reference a single agent record.
Element Set
This profile uses:
- Friend of a Friend (http://xmlns.com/foaf/0.1/) for names and websites.
- Dublin Core Terms (http://purl.org/dc/terms/) for descriptions.
- A small AgentCore2 namespace (https://zinecore.org/v2/agent#) for zine-specific agent properties.
AgentCore2 defines one primary shape:
- agentShape – description of an agent (person, collective, or organization).
AgentCore2 Shape: agentShape
The table below summarizes the properties used for agentShape. Detailed semantics and examples follow.
| ID | Label | DC/FOAF Mapping | Required | Repeatable | Notes |
|---|---|---|---|---|---|
| id | Local ID | local:id | yes | no | Internal, stable identifier |
| kind | Kind | local:kind | yes | no | Agent type: Person, Collective, Organization |
| display_name | Display Name | foaf:name | yes | no | Public name for display |
| legal_name | Legal Name | local:legalName | no | no | Legal or full name (may be private) |
| alternative_names | Alternative Names/Aliases | local:aliases | no | yes | Pseudonyms, former names, spelling variants |
| sort_name | Sort Name | local:sortName | no | no | Name for alphabetical sorting (e.g., "Smith, Jane") |
| pronouns | Pronouns | local:pronouns | no | yes | Preferred pronouns (e.g., she/her, they/them) |
| biography | Biography | local:biography | no | no | Biographical statement or description |
| scope_note | Scope Note | dcterms:description | no | yes | Usage notes or preferred citation |
| roles | Common Roles | local:roles | no | yes | Typical roles (creator, editor, illustrator) |
| orcid | ORCID | local:orcid | no | no | ORCID identifier URL |
| wikidata | Wikidata ID | local:wikidataId | no | no | Wikidata Q-ID |
| other_identifiers | Other Identifiers | dcterms:identifier | no | yes | VIAF, ISNI, local authority IDs |
| active_dates | Active Dates | local:activeDates | no | yes | Date ranges when agent was active |
| location | Location | local:location | no | yes | Geographic location(s) |
| website | Website | foaf:homepage | no | no | Personal or organizational website URL |
| foaf:mbox | no | no | Contact email address (may be private) | ||
| social_media | Social Media | local:socialMedia | no | yes | Social media profiles |
| public | Public | local:public | yes | no | Whether agent details may be shown publicly |
Cardinality and Constraints (Narrative)
- Required properties (minimal record): id, kind, display_name, public.
- id: Internal, stable identifier (e.g., agent_judith_arcana, agent_riot_grrrl_collective).
- kind: Must be one of: Person, Collective, Organization (from Agent Kinds vocabulary).
- display_name: The name to display publicly (may be pseudonym).
- public: Boolean indicating whether this agent's details may appear in public catalogs.
- Privacy considerations:
- legal_name is OPTIONAL and may be kept private (internal use only).
- public: false indicates the agent prefers anonymity or privacy.
- email and other contact info should respect privacy preferences.
- For anonymous creators, use display_name: "Anonymous" with public: false.
- Pseudonyms and alternative names:
- display_name should contain the name the agent prefers to use publicly.
- alternative_names can list other known names, pseudonyms, or spelling variants.
- legal_name (if recorded) should only be used internally.
- Controlled vocabularies:
- kind MUST use Agent Kinds vocabulary: Person, Collective, Organization.
- roles SHOULD use Agent Roles vocabulary: creator, editor, illustrator, publisher, distributor, printer, contributor, etc.
- See Agent Kinds vocabulary and Agent Roles vocabulary.
- Identifiers:
- orcid SHOULD be the full URL (e.g., https://orcid.org/0000-0001-2345-6789).
- wikidata SHOULD be the Q-ID only (e.g., Q12345678).
- other_identifiers can include VIAF, ISNI, local authority IDs.
- Geographic and temporal coverage:
- location can be city, region, country, or multiple locations (repeatable).
- active_dates describes when the agent was active (e.g., "1990-2005", "2010-present").
Alignment with Standards
FOAF (Friend of a Friend)
AgentCore2 aligns with FOAF vocabulary:
- foaf:name (Display Name)
- foaf:homepage (Website)
- foaf:mbox (Email)
Schema.org
Maps to Schema.org types:
- kind: Person → schema:Person
- kind: Collective → schema:Organization (with creative collective properties)
- kind: Organization → schema:Organization
BIBFRAME
Maps to BIBFRAME agent model:
- AgentCore2 → bf:Agent
- Supports bf:Person, bf:Organization
Privacy and Ethics
AgentCore2 is designed with privacy and respect for zine creators:
Privacy Principles
- Pseudonyms are primary identities — Never prioritize legal names over chosen names
- Anonymity is valid — Support creators who wish to remain anonymous
- Privacy flags matter — Respect public: false settings
- Contact info is sensitive — Email and social media should be optional and private by default
- Creator autonomy — Allow creators to control their own metadata
When cataloging agents:
- Always use the name the creator prefers (display_name)
- Only record legal_name if necessary and with permission
- Set public: false for creators who prefer privacy
- Never publish private contact information
- For anonymous works, create an agent record with display_name: "Anonymous" and public: false
Example AgentCore2 Descriptions
Example 1: Individual Zinester with Pseudonym
{
"id": "agent_moxie_la_punk",
"kind": "Person",
"display_name": "Moxie la Punk",
"alternative_names": ["Moxie", "M. LaPunk"],
"pronouns": ["she/her"],
"biography": "Feminist zinester based in Seattle. Creator of Riot Grrrl zines in the 1990s.",
"active_dates": ["1991-1998", "2015-present"],
"location": ["Seattle, WA, USA"],
"website": "https://moxielapunk.com",
"orcid": "https://orcid.org/0000-0001-2345-6789",
"wikidata": "Q87654321",
"roles": ["creator", "editor", "illustrator"],
"public": true
}
Example 2: Anonymous Collective
{
"id": "agent_anonymous_feminist_collective",
"kind": "Collective",
"display_name": "Anonymous Feminist Collective",
"biography": "Underground feminist collective publishing reproductive rights zines. Members prefer to remain anonymous.",
"active_dates": ["2010-present"],
"location": ["United States"],
"roles": ["creator", "publisher"],
"public": false
}
Example 3: Zine Publishing Organization
{
"id": "agent_microcosm_publishing",
"kind": "Organization",
"display_name": "Microcosm Publishing",
"legal_name": "Microcosm Publishing, LLC",
"biography": "Independent publisher and distributor specializing in DIY culture, punk, and grassroots activism since 1996.",
"active_dates": ["1996-present"],
"location": ["Portland, OR, USA"],
"website": "https://microcosmpublishing.com",
"wikidata": "Q6842516",
"roles": ["publisher", "distributor"],
"public": true
}
Example 4: Individual with Legal Name (Private)
{
"id": "agent_zinester_jane",
"kind": "Person",
"display_name": "Jane Z",
"legal_name": "Jane Marie Zinester",
"alternative_names": ["J. Zinester", "Jane Marie"],
"sort_name": "Zinester, Jane",
"pronouns": ["they/them"],
"biography": "Queer zinester focused on mental health and neurodivergence. Prefers to use pseudonym publicly.",
"active_dates": ["2018-present"],
"location": ["Austin, TX, USA"],
"roles": ["creator"],
"public": true
}
Note: In Example 4, legal_name is recorded but should only be used internally. All public-facing catalogs should display display_name: "Jane Z".
Relationship to ZineCore2
AgentCore2 records are referenced from ZineCore2 records via the creator, contributor, and publisher properties:
// ZineCore2 record
{
"title": "Mutate Zine #3",
"creator": ["agent_judith_arcana"], // References AgentCore2 id
"contributor": ["agent_moxie_la_punk"],
"publisher": ["agent_microcosm_publishing"],
// ... other fields
}
// AgentCore2 record
{
"id": "agent_judith_arcana",
"kind": "Person",
"display_name": "Judith Arcana",
// ... other fields
}
This enables:
- Authority control: One agent record, many zine records
- Browse by creator: "Show me all zines by this collective"
- Deduplication: Consistent agent identifiers across collections
- Privacy: Centralized privacy settings apply to all references
See Also
- ZineCore2 Profile — References agents via creator/contributor
- Downloads — Download AgentCore2 JSON Schema and TypeScript types