# ============================================================================= # GLAM-NER Entity Annotation Convention # Module: Relationship Annotations # Path: modules/advanced/relationship_annotations.yaml # Version: 1.7.0 # ============================================================================= # # This module defines relationship annotations that capture semantic links # between entities within and across documents. # # Key distinction from coreference: # - COREFERENCE: Two mentions refer to the SAME entity (identity) # - RELATIONSHIP: Two DIFFERENT entities have a semantic connection # # Example: # - Coreference: "Rembrandt" and "the painter" → same person # - Relationship: "Rembrandt" created "The Night Watch" → two entities linked # # Ontological foundations: # - CIDOC-CRM for cultural heritage relationships # - FRBRoo for bibliographic/work relationships # - RiC-O for archival relationships # - Schema.org for web semantics # - PROV-O for provenance # # ============================================================================= module: id: relationship_annotations name: Relationship Annotations version: "1.7.0" status: stable category: advanced dependencies: - core/convention - core/namespaces - hypernyms/agt - hypernyms/grp - hypernyms/top - hypernyms/geo - hypernyms/tmp - hypernyms/wrk - hypernyms/rol - hypernyms/app description: | Relationship annotations capture semantic links between entities within and across documents. Unlike entity annotations which identify spans of text, relationship annotations connect two or more entity annotations via typed predicates drawn from established ontologies. This module provides: - 11 relationship hypernym categories (REL.*) - 60+ specific relationship hyponyms - Annotation schema for structured relationship encoding - Extraction patterns for NLP-based relationship detection - Reification approaches for complex relationship metadata - Validation rules for type consistency # ============================================================================= # NAMESPACES # ============================================================================= namespaces: # Core relationship vocabularies crm: "http://www.cidoc-crm.org/cidoc-crm/" crmsci: "http://www.cidoc-crm.org/extensions/crmsci/" frbroo: "http://iflastandards.info/ns/fr/frbr/frbroo/" rico: "https://www.ica.org/standards/RiC/ontology#" rel: "http://purl.org/vocab/relationship/" bio: "http://purl.org/vocab/bio/0.1/" schema: "http://schema.org/" wdt: "http://www.wikidata.org/prop/direct/" dbo: "http://dbpedia.org/ontology/" gndo: "https://d-nb.info/standards/elementset/gnd#" edm: "http://www.europeana.eu/schemas/edm/" dc: "http://purl.org/dc/elements/1.1/" dcterms: "http://purl.org/dc/terms/" prov: "http://www.w3.org/ns/prov#" oa: "http://www.w3.org/ns/oa#" rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdfs: "http://www.w3.org/2000/01/rdf-schema#" owl: "http://www.w3.org/2002/07/owl#" skos: "http://www.w3.org/2004/02/skos/core#" time: "http://www.w3.org/2006/time#" geo: "http://www.opengis.net/ont/geosparql#" # ============================================================================= # RELATIONSHIP HYPERNYM TAXONOMY # ============================================================================= relationship_hypernyms: description: | Top-level categorization of relationship types. Each hypernym groups semantically related predicates and maps to established ontologies. hypernyms: # ------------------------------------------------------------------------- # REL.CRE - Creation/Production Relationships # ------------------------------------------------------------------------- - code: "REL.CRE" label: "Creation" description: | Relationships involving the creation, production, or authorship of works, objects, or expressions. Central to cultural heritage. ontology_mappings: - uri: "crm:P14_carried_out_by" label: "carried out by" inverse: "crm:P14i_performed" - uri: "crm:P94_has_created" label: "has created" inverse: "crm:P94i_was_created_by" - uri: "schema:creator" label: "creator" - uri: "schema:author" label: "author" - uri: "dc:creator" label: "creator" - uri: "frbroo:R17_created" label: "created (FRBR Work)" hyponyms: - code: "REL.CRE.AUT" label: "Authored" description: "Agent authored a textual work" predicates: - uri: "schema:author" - uri: "dcterms:creator" - uri: "wdt:P50" wikidata_label: "author" domain: ["AGT.PER", "AGT.GRP"] range: ["WRK.TXT", "WRK.WRK"] - code: "REL.CRE.ART" label: "Created (Artistic)" description: "Agent created an artistic work" predicates: - uri: "crm:P14_carried_out_by" - uri: "wdt:P170" wikidata_label: "creator" domain: ["AGT.PER", "AGT.GRP"] range: ["WRK.VIS", "WRK.WRK"] - code: "REL.CRE.COM" label: "Composed" description: "Agent composed a musical work" predicates: - uri: "schema:composer" - uri: "wdt:P86" wikidata_label: "composer" domain: ["AGT.PER"] range: ["WRK.MUS"] - code: "REL.CRE.DIR" label: "Directed" description: "Agent directed a performance or film" predicates: - uri: "schema:director" - uri: "wdt:P57" wikidata_label: "director" domain: ["AGT.PER"] range: ["WRK.PER", "WRK.CIN"] - code: "REL.CRE.EDT" label: "Edited" description: "Agent edited a work" predicates: - uri: "schema:editor" - uri: "wdt:P98" wikidata_label: "editor" domain: ["AGT.PER", "AGT.GRP"] range: ["WRK.TXT", "WRK.WRK"] - code: "REL.CRE.TRN" label: "Translated" description: "Agent translated a work" predicates: - uri: "schema:translator" - uri: "wdt:P655" wikidata_label: "translator" domain: ["AGT.PER"] range: ["WRK.TXT"] - code: "REL.CRE.ILL" label: "Illustrated" description: "Agent illustrated a work" predicates: - uri: "schema:illustrator" - uri: "wdt:P110" wikidata_label: "illustrator" domain: ["AGT.PER"] range: ["WRK.TXT", "WRK.VIS"] - code: "REL.CRE.PHO" label: "Photographed" description: "Agent photographed (captured image)" predicates: - uri: "schema:photographer" - uri: "wdt:P4876" wikidata_label: "photographer" domain: ["AGT.PER"] range: ["WRK.VIS"] - code: "REL.CRE.DES" label: "Designed" description: "Agent designed an object or building" predicates: - uri: "wdt:P287" wikidata_label: "designed by" domain: ["AGT.PER", "AGT.GRP"] range: ["WRK.OBJ", "TOP.BLT"] - code: "REL.CRE.INV" label: "Invented" description: "Agent invented something" predicates: - uri: "wdt:P61" wikidata_label: "discoverer or inventor" domain: ["AGT.PER", "AGT.GRP"] range: ["WRK.OBJ", "WRK.WRK"] # ------------------------------------------------------------------------- # REL.TMP - Temporal Relationships # ------------------------------------------------------------------------- - code: "REL.TMP" label: "Temporal" description: | Relationships with temporal semantics - events, periods, sequences. Integrates with CIDOC-CRM temporal entities and TimeML. ontology_mappings: - uri: "crm:P4_has_time-span" label: "has time-span" - uri: "time:hasTime" label: "has time" - uri: "edm:happenedAt" label: "happened at (time)" hyponyms: - code: "REL.TMP.DUR" label: "During" description: "Entity existed/occurred during time period" predicates: - uri: "crm:P4_has_time-span" - uri: "time:inside" domain: ["*"] range: ["TMP.DUR", "TMP.RNG"] - code: "REL.TMP.BEF" label: "Before" description: "Entity/event occurred before another" predicates: - uri: "time:before" - uri: "crm:P120_occurs_before" domain: ["TMP.*", "EVT.*"] range: ["TMP.*", "EVT.*"] - code: "REL.TMP.AFT" label: "After" description: "Entity/event occurred after another" predicates: - uri: "time:after" - uri: "crm:P120i_occurs_after" domain: ["TMP.*", "EVT.*"] range: ["TMP.*", "EVT.*"] - code: "REL.TMP.CON" label: "Contemporaneous" description: "Entities/events overlapped in time" predicates: - uri: "time:intervalOverlaps" - uri: "edm:isRelatedTo" domain: ["*"] range: ["*"] - code: "REL.TMP.BGN" label: "Began" description: "Entity/event started at time" predicates: - uri: "time:hasBeginning" - uri: "crm:P82a_begin_of_the_begin" domain: ["*"] range: ["TMP.DAB", "TMP.RNG"] - code: "REL.TMP.END" label: "Ended" description: "Entity/event ended at time" predicates: - uri: "time:hasEnd" - uri: "crm:P82b_end_of_the_end" domain: ["*"] range: ["TMP.DAB", "TMP.RNG"] # ------------------------------------------------------------------------- # REL.SPA - Spatial Relationships # ------------------------------------------------------------------------- - code: "REL.SPA" label: "Spatial" description: | Relationships with spatial/geographic semantics. Uses GeoSPARQL topological relations and CIDOC-CRM place properties. ontology_mappings: - uri: "crm:P53_has_former_or_current_location" label: "has former or current location" - uri: "geo:sfWithin" label: "within (spatial)" - uri: "schema:location" label: "location" hyponyms: - code: "REL.SPA.LOC" label: "Located In" description: "Entity is/was located in place" predicates: - uri: "crm:P53_has_former_or_current_location" - uri: "schema:location" - uri: "wdt:P276" wikidata_label: "location" domain: ["*"] range: ["TOP.*", "GEO.*"] - code: "REL.SPA.WTH" label: "Within" description: "Place is spatially within another place" predicates: - uri: "geo:sfWithin" - uri: "crm:P89_falls_within" - uri: "wdt:P131" wikidata_label: "located in administrative entity" domain: ["TOP.*", "GEO.*"] range: ["TOP.*", "GEO.*"] - code: "REL.SPA.CON" label: "Contains" description: "Place spatially contains another" predicates: - uri: "geo:sfContains" - uri: "crm:P89i_contains" domain: ["TOP.*", "GEO.*"] range: ["TOP.*", "GEO.*"] - code: "REL.SPA.ADJ" label: "Adjacent To" description: "Place is adjacent to another" predicates: - uri: "geo:sfTouches" - uri: "wdt:P47" wikidata_label: "shares border with" domain: ["TOP.*", "GEO.*"] range: ["TOP.*", "GEO.*"] - code: "REL.SPA.NER" label: "Near" description: "Entity is near a place (fuzzy proximity)" predicates: - uri: "schema:geo" - uri: "crm:P168_place_is_defined_by" domain: ["*"] range: ["TOP.*", "GEO.*"] - code: "REL.SPA.ORG" label: "Origin" description: "Entity originates from place" predicates: - uri: "schema:birthPlace" - uri: "wdt:P19" wikidata_label: "place of birth" - uri: "wdt:P495" wikidata_label: "country of origin" domain: ["AGT.PER", "WRK.*"] range: ["TOP.*"] # ------------------------------------------------------------------------- # REL.SOC - Social Relationships # ------------------------------------------------------------------------- - code: "REL.SOC" label: "Social" description: | Interpersonal and organizational relationships. Uses RELATIONSHIP vocabulary, Bio ontology, and social network predicates. ontology_mappings: - uri: "rel:participantIn" label: "participant in" - uri: "bio:relationship" label: "relationship (bio)" - uri: "schema:knows" label: "knows" hyponyms: - code: "REL.SOC.FAM" label: "Family" description: "Family relationship between persons" predicates: - uri: "rel:parentOf" - uri: "rel:childOf" - uri: "rel:siblingOf" - uri: "rel:spouseOf" - uri: "wdt:P22" wikidata_label: "father" - uri: "wdt:P25" wikidata_label: "mother" - uri: "wdt:P26" wikidata_label: "spouse" - uri: "wdt:P40" wikidata_label: "child" domain: ["AGT.PER"] range: ["AGT.PER"] sub_relations: - code: "REL.SOC.FAM.PAR" label: "Parent Of" predicates: ["rel:parentOf", "wdt:P22", "wdt:P25"] - code: "REL.SOC.FAM.CHD" label: "Child Of" predicates: ["rel:childOf", "wdt:P40"] - code: "REL.SOC.FAM.SIB" label: "Sibling Of" predicates: ["rel:siblingOf", "wdt:P3373"] - code: "REL.SOC.FAM.SPO" label: "Spouse Of" predicates: ["rel:spouseOf", "wdt:P26"] - code: "REL.SOC.FAM.GRP" label: "Grandparent Of" predicates: ["wdt:P1038"] - code: "REL.SOC.PRO" label: "Professional" description: "Professional/occupational relationship" predicates: - uri: "rel:collaboratesWith" - uri: "schema:colleague" - uri: "wdt:P1066" wikidata_label: "student of" - uri: "wdt:P184" wikidata_label: "doctoral advisor" domain: ["AGT.PER"] range: ["AGT.PER", "GRP.*"] sub_relations: - code: "REL.SOC.PRO.STU" label: "Student Of" predicates: ["wdt:P1066"] - code: "REL.SOC.PRO.TCH" label: "Teacher Of" predicates: ["wdt:P802"] - code: "REL.SOC.PRO.COL" label: "Colleague Of" predicates: ["schema:colleague"] - code: "REL.SOC.PRO.MNT" label: "Mentored By" predicates: ["wdt:P184"] - code: "REL.SOC.MEM" label: "Membership" description: "Agent is member of group" predicates: - uri: "schema:memberOf" - uri: "crm:P107i_is_current_or_former_member_of" - uri: "wdt:P463" wikidata_label: "member of" domain: ["AGT.PER", "GRP.*"] range: ["GRP.*"] - code: "REL.SOC.EMP" label: "Employment" description: "Agent employed by organization" predicates: - uri: "schema:worksFor" - uri: "wdt:P108" wikidata_label: "employer" domain: ["AGT.PER"] range: ["GRP.ORG", "GRP.COR", "GRP.GOV"] - code: "REL.SOC.AFF" label: "Affiliation" description: "Agent affiliated with organization" predicates: - uri: "schema:affiliation" - uri: "wdt:P1416" wikidata_label: "affiliation" domain: ["AGT.PER"] range: ["GRP.*"] - code: "REL.SOC.KNO" label: "Knows" description: "Agent knows another agent" predicates: - uri: "schema:knows" - uri: "rel:knowsOf" domain: ["AGT.PER"] range: ["AGT.PER"] - code: "REL.SOC.PAT" label: "Patronage" description: "Patron-artist/client relationship" predicates: - uri: "wdt:P88" wikidata_label: "commissioned by" domain: ["AGT.PER", "GRP.*"] range: ["AGT.PER", "GRP.*"] # ------------------------------------------------------------------------- # REL.ORG - Organizational Relationships # ------------------------------------------------------------------------- - code: "REL.ORG" label: "Organizational" description: | Relationships between organizations, including hierarchy, succession, and structural connections. ontology_mappings: - uri: "schema:parentOrganization" label: "parent organization" - uri: "rico:isSuccessorOf" label: "is successor of" - uri: "crm:P107_has_current_or_former_member" label: "has member" hyponyms: - code: "REL.ORG.PAR" label: "Parent Organization" description: "Organization is parent of another" predicates: - uri: "schema:parentOrganization" - uri: "wdt:P749" wikidata_label: "parent organization" domain: ["GRP.*"] range: ["GRP.*"] - code: "REL.ORG.SUB" label: "Subsidiary" description: "Organization is subsidiary of another" predicates: - uri: "schema:subOrganization" - uri: "wdt:P355" wikidata_label: "subsidiary" domain: ["GRP.*"] range: ["GRP.*"] - code: "REL.ORG.SUC" label: "Successor" description: "Organization succeeded another" predicates: - uri: "rico:isSuccessorOf" - uri: "wdt:P1366" wikidata_label: "replaced by" domain: ["GRP.*"] range: ["GRP.*"] - code: "REL.ORG.PRE" label: "Predecessor" description: "Organization preceded another" predicates: - uri: "rico:hasPredecessor" - uri: "wdt:P1365" wikidata_label: "replaces" domain: ["GRP.*"] range: ["GRP.*"] - code: "REL.ORG.MRG" label: "Merged Into" description: "Organization merged into another" predicates: - uri: "rico:isAssociatedWithEvent" - uri: "wdt:P7888" wikidata_label: "merged into" domain: ["GRP.*"] range: ["GRP.*"] - code: "REL.ORG.SPL" label: "Split From" description: "Organization split from another" predicates: - uri: "wdt:P807" wikidata_label: "separated from" domain: ["GRP.*"] range: ["GRP.*"] - code: "REL.ORG.FND" label: "Founded By" description: "Organization founded by agent" predicates: - uri: "schema:founder" - uri: "wdt:P112" wikidata_label: "founded by" domain: ["GRP.*"] range: ["AGT.PER", "GRP.*"] # ------------------------------------------------------------------------- # REL.WRK - Work/Expression Relationships (FRBR) # ------------------------------------------------------------------------- - code: "REL.WRK" label: "Work Relations" description: | Relationships between works, expressions, manifestations, and items following the FRBR model. Critical for bibliographic and archival data. ontology_mappings: - uri: "frbroo:R3_is_realised_in" label: "is realised in (Work→Expression)" - uri: "frbroo:R4_carriers_provided_by" label: "carriers provided by (Expression→Manifestation)" - uri: "schema:isBasedOn" label: "is based on" hyponyms: - code: "REL.WRK.EXP" label: "Expression Of" description: "Expression realizes a Work" predicates: - uri: "frbroo:R3i_realises" - uri: "wdt:P629" wikidata_label: "edition or translation of" domain: ["WRK.EXP"] range: ["WRK.WRK"] - code: "REL.WRK.MAN" label: "Manifestation Of" description: "Manifestation embodies an Expression" predicates: - uri: "frbroo:R4i_comprises_carriers_of" domain: ["WRK.MAN"] range: ["WRK.EXP"] - code: "REL.WRK.ITM" label: "Item Of" description: "Item exemplifies a Manifestation" predicates: - uri: "frbroo:R7i_is_example_of" domain: ["WRK.ITM"] range: ["WRK.MAN"] - code: "REL.WRK.DRV" label: "Derived From" description: "Work derived from another work" predicates: - uri: "schema:isBasedOn" - uri: "wdt:P144" wikidata_label: "based on" domain: ["WRK.*"] range: ["WRK.*"] - code: "REL.WRK.TRN" label: "Translation Of" description: "Work is translation of another" predicates: - uri: "wdt:P629" wikidata_label: "edition or translation of" domain: ["WRK.TXT"] range: ["WRK.TXT"] - code: "REL.WRK.ADP" label: "Adaptation Of" description: "Work is adaptation of another" predicates: - uri: "wdt:P144" wikidata_label: "based on" domain: ["WRK.*"] range: ["WRK.*"] - code: "REL.WRK.REF" label: "References" description: "Work references another work" predicates: - uri: "dcterms:references" - uri: "schema:citation" domain: ["WRK.*"] range: ["WRK.*"] - code: "REL.WRK.PRT" label: "Part Of" description: "Work is part of larger work" predicates: - uri: "dcterms:isPartOf" - uri: "schema:isPartOf" - uri: "wdt:P361" wikidata_label: "part of" domain: ["WRK.*"] range: ["WRK.*"] - code: "REL.WRK.SER" label: "Part Of Series" description: "Work is part of a series" predicates: - uri: "schema:isPartOf" - uri: "wdt:P179" wikidata_label: "part of the series" domain: ["WRK.*"] range: ["WRK.SER"] # ------------------------------------------------------------------------- # REL.CUS - Custodial/Ownership Relationships # ------------------------------------------------------------------------- - code: "REL.CUS" label: "Custodial" description: | Relationships involving ownership, custody, and provenance of objects and collections. Critical for GLAM institutions. ontology_mappings: - uri: "crm:P50_has_current_keeper" label: "has current keeper" - uri: "crm:P51_has_former_or_current_owner" label: "has former or current owner" - uri: "rico:hasOrHadHolder" label: "has or had holder" hyponyms: - code: "REL.CUS.OWN" label: "Owned By" description: "Object/collection owned by agent" predicates: - uri: "crm:P51_has_former_or_current_owner" - uri: "schema:ownedBy" - uri: "wdt:P127" wikidata_label: "owned by" domain: ["WRK.*", "WRK.OBJ"] range: ["AGT.PER", "GRP.*"] - code: "REL.CUS.KEP" label: "Kept By" description: "Object/collection in custody of agent" predicates: - uri: "crm:P50_has_current_keeper" - uri: "rico:hasOrHadHolder" - uri: "wdt:P195" wikidata_label: "collection" domain: ["WRK.*", "WRK.OBJ"] range: ["GRP.*"] - code: "REL.CUS.COL" label: "In Collection" description: "Item is in a collection" predicates: - uri: "edm:isShownAt" - uri: "wdt:P195" wikidata_label: "collection" domain: ["WRK.ITM", "WRK.OBJ"] range: ["GRP.*", "WRK.COL"] - code: "REL.CUS.PRV" label: "Previous Owner" description: "Object was previously owned by agent" predicates: - uri: "crm:P51_has_former_or_current_owner" - uri: "wdt:P127" domain: ["WRK.*", "WRK.OBJ"] range: ["AGT.PER", "GRP.*"] temporal: true - code: "REL.CUS.ACQ" label: "Acquired From" description: "Object acquired from agent" predicates: - uri: "crm:P24i_changed_ownership_through" domain: ["WRK.*", "WRK.OBJ"] range: ["AGT.PER", "GRP.*"] - code: "REL.CUS.DNT" label: "Donated By" description: "Object donated by agent" predicates: - uri: "wdt:P1028" wikidata_label: "donated by" domain: ["WRK.*", "WRK.OBJ"] range: ["AGT.PER", "GRP.*"] # ------------------------------------------------------------------------- # REL.SUB - Subject/Topic Relationships # ------------------------------------------------------------------------- - code: "REL.SUB" label: "Subject" description: | Relationships indicating what a work is about, depicts, or discusses. Critical for subject indexing and discovery. ontology_mappings: - uri: "schema:about" label: "about" - uri: "dcterms:subject" label: "subject" - uri: "crm:P62_depicts" label: "depicts" hyponyms: - code: "REL.SUB.ABT" label: "About" description: "Work is about a topic/entity" predicates: - uri: "schema:about" - uri: "dcterms:subject" - uri: "wdt:P921" wikidata_label: "main subject" domain: ["WRK.*"] range: ["*"] - code: "REL.SUB.DEP" label: "Depicts" description: "Visual work depicts entity" predicates: - uri: "crm:P62_depicts" - uri: "wdt:P180" wikidata_label: "depicts" domain: ["WRK.VIS"] range: ["AGT.PER", "TOP.*", "WRK.OBJ"] - code: "REL.SUB.MNT" label: "Mentions" description: "Work mentions entity (not main subject)" predicates: - uri: "schema:mentions" domain: ["WRK.*"] range: ["*"] - code: "REL.SUB.SET" label: "Set In" description: "Narrative work set in place/time" predicates: - uri: "schema:contentLocation" - uri: "wdt:P840" wikidata_label: "narrative location" domain: ["WRK.TXT", "WRK.CIN", "WRK.PER"] range: ["TOP.*", "TMP.*"] - code: "REL.SUB.GNR" label: "Genre" description: "Work belongs to genre" predicates: - uri: "schema:genre" - uri: "wdt:P136" wikidata_label: "genre" domain: ["WRK.*"] range: ["WRK.GNR"] # ------------------------------------------------------------------------- # REL.EVT - Event Relationships # ------------------------------------------------------------------------- - code: "REL.EVT" label: "Event" description: | Relationships involving participation in or connection to events. Events are temporal entities with participants and locations. ontology_mappings: - uri: "crm:P11_had_participant" label: "had participant" - uri: "crm:P7_took_place_at" label: "took place at" - uri: "schema:event" label: "event" hyponyms: - code: "REL.EVT.PAR" label: "Participated In" description: "Agent participated in event" predicates: - uri: "crm:P11i_participated_in" - uri: "wdt:P1344" wikidata_label: "participant in" domain: ["AGT.*"] range: ["EVT.*"] - code: "REL.EVT.ORG" label: "Organized" description: "Agent organized event" predicates: - uri: "schema:organizer" - uri: "wdt:P664" wikidata_label: "organizer" domain: ["AGT.*", "GRP.*"] range: ["EVT.*"] - code: "REL.EVT.LOC" label: "Event Location" description: "Event took place at location" predicates: - uri: "crm:P7_took_place_at" - uri: "schema:location" - uri: "wdt:P276" wikidata_label: "location" domain: ["EVT.*"] range: ["TOP.*"] - code: "REL.EVT.TIM" label: "Event Time" description: "Event occurred at time" predicates: - uri: "crm:P4_has_time-span" - uri: "schema:startDate" - uri: "wdt:P585" wikidata_label: "point in time" domain: ["EVT.*"] range: ["TMP.*"] - code: "REL.EVT.RSL" label: "Resulted In" description: "Event resulted in outcome" predicates: - uri: "prov:generated" - uri: "crm:P92_brought_into_existence" domain: ["EVT.*"] range: ["*"] # ------------------------------------------------------------------------- # REL.IDT - Identity Relationships # ------------------------------------------------------------------------- - code: "REL.IDT" label: "Identity" description: | Relationships expressing identity, equivalence, and representation. Distinct from coreference (same entity mentions) - these are ontological identity claims between different conceptualizations. ontology_mappings: - uri: "owl:sameAs" label: "same as" - uri: "skos:exactMatch" label: "exact match" - uri: "skos:closeMatch" label: "close match" hyponyms: - code: "REL.IDT.SAM" label: "Same As" description: "Entity is identical to another (different URIs)" predicates: - uri: "owl:sameAs" - uri: "skos:exactMatch" domain: ["*"] range: ["*"] notes: | Use for linking to external authority files (VIAF, Wikidata, etc.) Distinct from coreference which links mentions within documents. - code: "REL.IDT.REP" label: "Represents" description: "Entity represents another (e.g., portrait of person)" predicates: - uri: "crm:P138_represents" domain: ["WRK.VIS", "WRK.OBJ"] range: ["AGT.PER", "TOP.*"] - code: "REL.IDT.SIM" label: "Similar To" description: "Entity is similar to another (not identical)" predicates: - uri: "skos:closeMatch" - uri: "skos:relatedMatch" domain: ["*"] range: ["*"] - code: "REL.IDT.ALT" label: "Alternative Name For" description: "Appellation is alternative for entity" predicates: - uri: "skos:altLabel" - uri: "crm:P139_has_alternative_form" domain: ["APP.*"] range: ["*"] # ------------------------------------------------------------------------- # REL.ROL - Role Relationships # ------------------------------------------------------------------------- - code: "REL.ROL" label: "Role" description: | Relationships expressing roles that agents play in contexts. Temporally-bound role assertions. ontology_mappings: - uri: "crm:P14.1_in_the_role_of" label: "in the role of" - uri: "schema:roleName" label: "role name" hyponyms: - code: "REL.ROL.HLD" label: "Held Role" description: "Agent held role/position" predicates: - uri: "schema:hasOccupation" - uri: "wdt:P39" wikidata_label: "position held" domain: ["AGT.PER"] range: ["ROL.*"] temporal: true - code: "REL.ROL.TTL" label: "Held Title" description: "Agent held title/rank" predicates: - uri: "wdt:P97" wikidata_label: "noble title" - uri: "wdt:P410" wikidata_label: "military rank" domain: ["AGT.PER"] range: ["ROL.TTL"] temporal: true - code: "REL.ROL.OCC" label: "Had Occupation" description: "Agent had occupation" predicates: - uri: "schema:hasOccupation" - uri: "wdt:P106" wikidata_label: "occupation" domain: ["AGT.PER"] range: ["ROL.OCC"] temporal: true - code: "REL.ROL.CTX" label: "Role Context" description: "Role was held in context of organization/event" predicates: - uri: "schema:worksFor" - uri: "crm:P11i_participated_in" domain: ["ROL.*"] range: ["GRP.*", "EVT.*"] # ============================================================================= # RELATIONSHIP ANNOTATION SCHEMA # ============================================================================= annotation_schema: description: | Schema for encoding relationship annotations as structured data. Supports both inline document annotations and standalone relationship assertions for knowledge graph construction. required_fields: - field: "relationship_id" type: "string" format: "UUID or URI" description: "Unique identifier for this relationship annotation" - field: "relationship_type" type: "string" format: "REL.{HYPERNYM}.{HYPONYM}" description: "Relationship type code from taxonomy" examples: - "REL.CRE.AUT" - "REL.SOC.FAM.PAR" - "REL.WRK.DRV" - field: "subject" type: "object" description: "Source entity of the relationship" schema: entity_id: "string (reference to entity annotation)" entity_type: "string (entity type code)" span_text: "string (optional, surface form)" uri: "string (optional, external URI)" - field: "predicate" type: "object" description: "The relationship predicate" schema: uri: "string (ontology predicate URI)" label: "string (human-readable label)" direction: "enum (FORWARD, INVERSE)" - field: "object" type: "object" description: "Target entity of the relationship" schema: entity_id: "string (reference to entity annotation)" entity_type: "string (entity type code)" span_text: "string (optional, surface form)" uri: "string (optional, external URI)" optional_fields: - field: "temporal_scope" type: "object" description: "When the relationship held/holds" schema: start_date: "string (ISO 8601)" end_date: "string (ISO 8601 or null for ongoing)" temporal_modifier: "enum (CIRCA, BEFORE, AFTER, DURING)" examples: - start_date: "1632-01-01" end_date: "1669-10-04" temporal_modifier: null - start_date: "1890" end_date: null temporal_modifier: "CIRCA" - field: "spatial_scope" type: "object" description: "Where the relationship held/holds" schema: place_id: "string (reference to place entity)" place_name: "string" geo_uri: "string (GeoNames, Pleiades, etc.)" - field: "provenance" type: "object" description: "Source and confidence of relationship assertion" schema: source_document: "string (document ID)" source_span: "object (character offsets)" extraction_method: "enum (MANUAL, RULE_BASED, ML_EXTRACTED, EXTERNAL_KB)" extractor_id: "string (model or annotator ID)" extraction_date: "string (ISO 8601)" confidence: "float (0.0-1.0)" evidence_text: "string (supporting text)" - field: "qualifiers" type: "array" description: "Additional qualifications on the relationship" item_schema: qualifier_type: "string (e.g., 'role', 'capacity', 'manner')" qualifier_value: "string" qualifier_uri: "string (optional)" examples: - qualifier_type: "role" qualifier_value: "co-author" - qualifier_type: "capacity" qualifier_value: "as regent" - field: "negation" type: "boolean" default: false description: "True if relationship is explicitly negated" - field: "hypothetical" type: "boolean" default: false description: "True if relationship is hypothetical/uncertain" - field: "source_claim" type: "boolean" default: false description: "True if relationship is attributed to a source (not factual assertion)" - field: "attributed_to" type: "object" description: "If source_claim=true, who made the claim" schema: agent_id: "string" agent_name: "string" # ============================================================================= # RELATIONSHIP EXTRACTION PATTERNS # ============================================================================= extraction_patterns: description: | Linguistic patterns for extracting relationships from text. Patterns are language-specific and map to relationship types. pattern_types: - type: "VERBAL" description: "Verb-mediated relationships" example: "Rembrandt painted The Night Watch" extraction_notes: | Parse verb as predicate, subject as source, object as target. Handle passive voice inversion. - type: "NOMINAL" description: "Noun phrase relationships" example: "Rembrandt's painting The Night Watch" extraction_notes: | Possessive constructions imply creation/ownership. Appositive constructions may indicate identity. - type: "PREPOSITIONAL" description: "Preposition-mediated relationships" example: "The Night Watch by Rembrandt" extraction_notes: | Prepositions indicate specific relationship types. "by" → creation, "in" → location, "of" → part-whole - type: "COPULAR" description: "Is-a relationships" example: "Rembrandt was a painter" extraction_notes: | Copular verbs indicate typing, role, identity. Handle tense for temporal scoping. - type: "COMPOUND" description: "Compound noun relationships" example: "the Rembrandt painting" extraction_notes: | Noun-noun compounds encode implicit relationships. Requires domain knowledge to disambiguate. language_patterns: english: creation: - pattern: "{AGENT} (painted|wrote|composed|created|made|designed) {WORK}" relationship: "REL.CRE.*" - pattern: "{WORK} by {AGENT}" relationship: "REL.CRE.*" - pattern: "{AGENT}'s {WORK}" relationship: "REL.CRE.*" family: - pattern: "{PERSON} (son|daughter|child) of {PERSON}" relationship: "REL.SOC.FAM.CHD" - pattern: "{PERSON} (father|mother|parent) of {PERSON}" relationship: "REL.SOC.FAM.PAR" - pattern: "{PERSON} married {PERSON}" relationship: "REL.SOC.FAM.SPO" location: - pattern: "{ENTITY} in {PLACE}" relationship: "REL.SPA.LOC" - pattern: "{ENTITY} at {PLACE}" relationship: "REL.SPA.LOC" - pattern: "{ENTITY} from {PLACE}" relationship: "REL.SPA.ORG" temporal: - pattern: "{ENTITY} in {DATE}" relationship: "REL.TMP.DUR" - pattern: "{ENTITY} (during|throughout) {PERIOD}" relationship: "REL.TMP.DUR" - pattern: "{ENTITY} (before|prior to) {EVENT/DATE}" relationship: "REL.TMP.BEF" dutch: creation: - pattern: "{AGENT} (schilderde|schreef|componeerde|maakte) {WORK}" relationship: "REL.CRE.*" - pattern: "{WORK} van {AGENT}" relationship: "REL.CRE.*" family: - pattern: "{PERSON} (zoon|dochter|kind) van {PERSON}" relationship: "REL.SOC.FAM.CHD" - pattern: "{PERSON} (vader|moeder|ouder) van {PERSON}" relationship: "REL.SOC.FAM.PAR" - pattern: "{PERSON} trouwde met {PERSON}" relationship: "REL.SOC.FAM.SPO" german: creation: - pattern: "{AGENT} (malte|schrieb|komponierte|schuf) {WORK}" relationship: "REL.CRE.*" - pattern: "{WORK} von {AGENT}" relationship: "REL.CRE.*" family: - pattern: "{PERSON} (Sohn|Tochter|Kind) von {PERSON}" relationship: "REL.SOC.FAM.CHD" # ============================================================================= # RELATIONSHIP REIFICATION # ============================================================================= reification: description: | Mechanism for making statements about relationships themselves. Required for provenance, uncertainty, temporal qualification, and nested relationship structures. approaches: - name: "RDF Reification" standard: "W3C RDF" description: "Classic quad-based reification using rdf:Statement" example: | _:stmt1 a rdf:Statement ; rdf:subject :Rembrandt ; rdf:predicate :created ; rdf:object :NightWatch ; :confidence 0.95 ; :source :Document123 . limitations: "Verbose, query complexity" - name: "Named Graphs" standard: "W3C RDF 1.1" description: "Group triples in named graphs for provenance" example: | GRAPH :assertion123 { :Rembrandt :created :NightWatch . } :assertion123 :confidence 0.95 ; :source :Document123 . advantages: "Cleaner queries, SPARQL support" - name: "Wikibase Qualifiers" standard: "Wikidata model" description: "Qualifiers attached to statement nodes" example: | wd:Q5598 p:P170 [ ps:P170 wd:Q5582 ; pq:P580 "1642"^^xsd:gYear ; prov:wasDerivedFrom [ pr:P248 wd:Q12345 ] ] . advantages: "Rich qualification, widespread adoption" - name: "RDF-star" standard: "W3C RDF-star (emerging)" description: "Quoted triples as subjects/objects" example: | << :Rembrandt :created :NightWatch >> :confidence 0.95 . advantages: "Concise, intuitive" limitations: "Limited tooling support (as of 2025)" recommended_approach: "Named Graphs" rationale: | Named graphs provide the best balance of expressivity, query support, and tooling maturity. Each relationship annotation becomes a named graph containing the core triple, with provenance attached to the graph identifier. schema: graph_naming: | Graph URIs follow pattern: {document_uri}#rel-{relationship_id} Example: https://example.org/doc/123#rel-a1b2c3d4 required_metadata: - "prov:generatedAtTime" - "prov:wasAttributedTo" - "oa:hasBody (the relationship triple)" - "oa:hasTarget (source document span)" # ============================================================================= # RELATIONSHIP VALIDATION # ============================================================================= validation: description: | Rules for validating relationship annotations. Ensures consistency with entity types, ontology constraints, and domain rules. type_constraints: description: "Validate domain/range compatibility" rules: - rule: "Subject entity type must be in relationship domain" error_code: "REL_DOMAIN_VIOLATION" example: | INVALID: REL.CRE.AUT with subject type TOP.BLT (building can't author) VALID: REL.CRE.AUT with subject type AGT.PER (person can author) - rule: "Object entity type must be in relationship range" error_code: "REL_RANGE_VIOLATION" example: | INVALID: REL.CRE.AUT with object type AGT.PER (can't author a person) VALID: REL.CRE.AUT with object type WRK.TXT (can author a text) logical_constraints: description: "Validate logical consistency" rules: - rule: "Symmetric relationships must have inverse annotation" applies_to: ["REL.SOC.FAM.SIB", "REL.SOC.FAM.SPO", "REL.SPA.ADJ"] - rule: "Asymmetric relationships cannot have same subject and object" applies_to: ["REL.SOC.FAM.PAR", "REL.ORG.PAR"] - rule: "Temporal relationships must have valid date ordering" applies_to: ["REL.TMP.BEF", "REL.TMP.AFT"] example: | INVALID: Event A REL.TMP.BEF Event B where A.date > B.date cardinality_constraints: description: "Validate multiplicity rules" rules: - rule: "Person can have at most 2 biological parents" relationship: "REL.SOC.FAM.PAR" max_cardinality: 2 - rule: "Work has exactly one original creator (primary)" relationship: "REL.CRE.*" notes: "Secondary creators use qualifiers" # ============================================================================= # EXAMPLES # ============================================================================= examples: - name: "Creation relationship" source_text: "The Night Watch was painted by Rembrandt in 1642." annotation: relationship_id: "rel-001" relationship_type: "REL.CRE.ART" subject: entity_id: "ent-rembrandt" entity_type: "AGT.PER" span_text: "Rembrandt" uri: "http://viaf.org/viaf/64013650" predicate: uri: "http://www.cidoc-crm.org/cidoc-crm/P14_carried_out_by" label: "carried out by" direction: "INVERSE" object: entity_id: "ent-nightwatch" entity_type: "WRK.VIS" span_text: "The Night Watch" uri: "http://www.wikidata.org/entity/Q219831" temporal_scope: start_date: "1642" end_date: "1642" provenance: source_document: "doc-123" source_span: start: 0 end: 47 extraction_method: "RULE_BASED" confidence: 0.95 evidence_text: "The Night Watch was painted by Rembrandt in 1642." - name: "Family relationship with temporal scope" source_text: "Willem-Alexander, son of Queen Beatrix, became king in 2013." annotation: relationship_id: "rel-002" relationship_type: "REL.SOC.FAM.CHD" subject: entity_id: "ent-willem" entity_type: "AGT.PER" span_text: "Willem-Alexander" predicate: uri: "http://purl.org/vocab/relationship/childOf" label: "child of" direction: "FORWARD" object: entity_id: "ent-beatrix" entity_type: "AGT.PER" span_text: "Queen Beatrix" temporal_scope: start_date: "1967-04-27" end_date: null provenance: extraction_method: "MANUAL" confidence: 1.0 - name: "Custodial relationship" source_text: "The Rijksmuseum houses over 8,000 objects from Rembrandt's era." annotation: relationship_id: "rel-003" relationship_type: "REL.CUS.KEP" subject: entity_id: "ent-rijks-collection" entity_type: "WRK.COL" span_text: "8,000 objects" predicate: uri: "http://www.cidoc-crm.org/cidoc-crm/P50_has_current_keeper" label: "has current keeper" direction: "FORWARD" object: entity_id: "ent-rijksmuseum" entity_type: "GRP.ORG" span_text: "The Rijksmuseum" uri: "http://www.wikidata.org/entity/Q190804" provenance: extraction_method: "ML_EXTRACTED" confidence: 0.88 - name: "Work derivation (FRBR)" source_text: "The 2019 film 'Little Women' is based on Louisa May Alcott's 1868 novel." annotation: relationship_id: "rel-004" relationship_type: "REL.WRK.ADP" subject: entity_id: "ent-lw-film" entity_type: "WRK.CIN" span_text: "The 2019 film 'Little Women'" predicate: uri: "http://schema.org/isBasedOn" label: "is based on" direction: "FORWARD" object: entity_id: "ent-lw-novel" entity_type: "WRK.TXT" span_text: "Louisa May Alcott's 1868 novel" provenance: extraction_method: "RULE_BASED" confidence: 0.98 - name: "Negated relationship" source_text: "Despite popular belief, Mozart did not poison Salieri." annotation: relationship_id: "rel-005" relationship_type: "REL.EVT.PAR" subject: entity_id: "ent-mozart" entity_type: "AGT.PER" span_text: "Mozart" predicate: uri: "http://www.cidoc-crm.org/cidoc-crm/P11i_participated_in" label: "participated in" direction: "FORWARD" object: entity_id: "ent-poisoning-event" entity_type: "EVT.ACT" span_text: "poison Salieri" negation: true provenance: extraction_method: "MANUAL" confidence: 1.0 evidence_text: "Despite popular belief, Mozart did not poison Salieri."