unlob Docs
Browse documentation

Provenance and independence: roles, origins and owners

Seventeen URLs of one wire story are one origin. ground says which sources are actually independent, and exactly how it decided.

Two counts, two questions

Every search hit carries independent_sources: the number of distinct hosts carrying the passage’s story, counted across near-duplicates dropped at ingest. It is a good filter (min_independent_sources=3) and a cheap signal. It is not a measure of independence: ten sites can run one wire dispatch, copy one press release, or belong to one media group, and every one of them counts as a host.

ground computes a different number. Within each story it groups members into origins, assigns each origin an owner, and reports independent_origins — origins with distinct owners. That is the count to hold a claim to.

source_role

What kind of source a passage is, for the purpose of weighing it as evidence.

RoleRule
officialThe host is a government, regulator, court, standards body or university: authority is gov or edu, the TLD is gov, mil or edu, or the host is under .gov.uk, .gc.ca, .gov.au, .europa.eu or .ac.uk.
primaryDocumentation, an academic paper, code, a published document (content_type docs, academic, code, document), or a press release — an organisation speaking for itself.
secondaryReporting, analysis or reference material about the subject (news, article, reference, opinion, how-to, video, product).
aggregatorA host that collects other hosts’ content (news aggregators).
ugcUser-generated: forums, Q&A, social hosts, or content_type forum / qa.
unknownNone of the above applied.

The rules run in that order, so a .gov host is official whatever its content type. Each label carries a role_confidence: high for a host rule, lower for a content-type rule.

origin_type

How a passage came to exist relative to the story it belongs to.

TypeMeaning
originalThe earliest member of its origin — the thing others copied, or a lone source.
wireA news-wire dispatch (Reuters, AP, AFP, dpa, PA, …), by host or by dateline in the text.
press_releaseA press release, by distributor host or by distributor marker in the text.
republishA later copy of an origin that already exists in the set. Never an evidence item.

Origins

Within a story, members are visited earliest-first. A member joins an existing origin when it carries the same wire service, the same press-release distributor, the same canonical URL, or the same normalised title as that origin’s representative; otherwise it opens a new origin. Two passages of the same page share a title and therefore an origin, which is right: they are one document.

{
  "id": "o:3f2a9c1e4b7d",
  "story_id": "…",
  "kind": "wire",
  "owner": "Thomson Reuters",
  "hosts": ["reuters.com", "localpaper.com", "othernews.com"],
  "registrable_domains": ["localpaper.com", "othernews.com", "reuters.com"],
  "members": ["a:0", "b:0", "c:0"],
  "representative": "a:0",
  "earliest_published_at": 1757790000,
  "confidence": 0.85
}

confidence says how strong the grouping signal was: a wire dateline is stronger than a title match across two unrelated domains.

Owners

An origin’s owner is the wire service for a wire dispatch; otherwise the media group that owns the representative’s registrable domain, from a curated table of the groups whose outlets most often appear together in one story; otherwise the registrable domain itself. news.bbc.co.uk and bbc.com are one owner; thehill.com and newsnationnow.com are one owner; example.com is its own.

The table is a starter list and is stated as such in /describe. A domain it does not know is treated as independent of every other domain, so the count errs towards over-stating independence for small outlets and never towards hiding a known group.

independence_score

Per evidence item, within the packed set:

ScoreMeaning
1.0The only origin with this owner in the set.
0.5Another origin in the set shares the owner.
0.0A republish — which never becomes an evidence item, so you will not see it.

The set-level number is coverage.independent_origins. hosts and copies on the receipt show how much syndication was collapsed to reach it.

What this does and does not detect

It detects: wire copy by host and dateline; press releases by distributor host and marker; republishes by matching title within a story; subdomains of one registrable domain; the media groups in the ownership table.

It does not detect: a rewrite of a wire story under a new headline (that becomes a second origin); ownership outside the table; two outlets citing the same unnamed source. The labels are deterministic and heuristic, each carries a confidence, and the rules on this page are the whole method.

Claim relations

Experimental. Pass claim= and each evidence item gets a claim_relationsupports, contradicts, qualifies or unresolved — with a relation_confidence and a relation_basis of passage (judged on the full text) or snippet. The rule is lexical: the best-overlapping sentence decides; a flipped negation or a disagreeing number makes it contradicts; a hedge (however, although, partly) makes it qualifies; too little overlap is unresolved. contradictions on the response lists the ids that contradict. No model is involved, and the response says experimental: ["claim_relations"].

Next