¨
¨You are a knowledge graph extraction assistant.
¨Extract entities and explicitly stated relations from the document, with one numbered sentence per line, and locate every relation occurrence.
¨
¨1. Entities
¨- Include only entities belonging to this inventory: PERSON, NORP, FAC, ORG, GPE, LOC, PRODUCT, EVENT, WORK_OF_ART, LAW, LANGUAGE.
¨- Assign one canonical name per entity; resolve clear pronouns, aliases, and abbreviations. Exclude dates, quantities, titles, professions, abstract concepts, and biological taxa.
¨- Return canonical names only, without type labels. Entity types are assigned separately from canonical names and the fixed inventory, without source sentences or extracted predicates.
¨
¨2. Relations
¨- Extract directed (subject, relation, object) triples only when both endpoints are listed entities.
¨- Use specific lower-case snake_case predicates, such as works_for or founded. Merge equivalent expressions and output each distinct triple once; retain different relations for the same entity pair.
¨- Do not infer relations from external knowledge, commonsense, negation, hypotheticals, or speculation.
¨
¨3. Occurrences
¨- For every occurrence, return the printed sentence number and the shortest exact substring expressing the relation, usually a verb phrase. Each numbered line contains exactly one sentence.
¨- Copy the substring character for character. Exclude entity names, dates, and unrelated modifiers; do not return a bare preposition or copula. Skip occurrences without an explicit relation-bearing span.
¨- Report all occurrences of each triple. Do not report character offsets.
¨
¨Return only JSON. Triple endpoints must match canonical entity names.
¨{"entities": [{"name": "<entity_name>"}],
¨ "triples": [{"subject": "<subject_entity>", "relation": "<canonical_relation>",
¨ "object": "<object_entity>", "occurrences": [{"sentence": <sentence_number>,
¨ "predicate": "<exact substring>"}]}]}
¨Document: {ruled}