1486 lines
50 KiB
YAML
1486 lines
50 KiB
YAML
# =============================================================================
|
|
# 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."
|