{
  "schema": "https://miscsubjects.com/schemas/jarticle.json",
  "status": "published",
  "slug": "what-is-prov",
  "title": "What Is W3C PROV",
  "kind": "standard",
  "summary": "<!-- hierarchy:nav -- Path: OIP(https://miscsubjects.com/a/oip) › Thinker Reference(https://miscsubjects.com/a/oip-thinker-reference) › Protocol Concepts(https://miscsubjects.com/a/oip-protocol-concepts) › What Is W3C PROV Shelf: Protocol",
  "created": "2026-07-15T06:25:01.576Z",
  "body": [
    "<!-- hierarchy:nav -->\n> **Path:** [OIP](https://miscsubjects.com/a/oip) › [Thinker Reference](https://miscsubjects.com/a/oip-thinker-reference) › [Protocol Concepts](https://miscsubjects.com/a/oip-protocol-concepts) › **What Is W3C PROV**\n>\n> **Shelf:** Protocol Concepts · **Traversal:** self-explaining · hierarchical · voxel-ready\n> **Machine root:** [OIP tree](https://miscsubjects.com/api/dispatch?map=1&format=markdown) · [Registry](https://miscsubjects.com/api/dispatch?registry=1)\n\n# What Is W3C PROV\n\n## §SELF — what-is-prov\n\n**What this page is:** A definition of the W3C PROV standard for representing provenance information.\n**What it explains:** The core types and relations that PROV defines, and how they model the origin and history of things.\n**Why read it:** You will understand what provenance means in a formal sense, how PROV structures it, and why OIP receipts can be exported as PROV-O for interoperability.\n\n### What W3C PROV Is\n\nPROV (short for PROVenance) is a W3C recommendation published in 2013 for representing provenance information on the web. Provenance means: where something came from, who made it, what was used to make it, and how it changed over time. PROV provides a standardized way to encode this information so that different systems can exchange and query it.\n\n### Why It Matters\n\nWithout a standard for provenance, every system invents its own way to record origin and history. Data from one system cannot be understood by another. PROV solves this by defining a common vocabulary: any system that exports PROV can be queried, visualized, and audited by any PROV-compatible tool. This matters for scientific reproducibility, legal compliance, and data quality assurance.\n\n### The Key Idea\n\nPROV defines three core types that everything else is built from:\n\n1. **Entity** — a thing: a document, a data file, an image, a physical object. An entity is a \"thing one wants to describe the provenance of.\"\n2. **Activity** — a process that creates or transforms entities. Activities have a start time and an end time.\n3. **Agent** — a person, organization, or software system responsible for an activity. Agents bear some form of responsibility.\n\nThese three types are connected by relations:\n\n- **wasGeneratedBy** — an entity was generated by an activity.\n- **wasDerivedFrom** — one entity was derived from another entity.\n- **wasAssociatedWith** — an activity was associated with an agent.\n- **actedOnBehalfOf** — one agent acted on behalf of another agent.\n\nFor example: A scientist (Agent) runs an experiment (Activity) that produces a dataset (Entity, via wasGeneratedBy). The scientist later derives a chart from the dataset (Entity, via wasDerivedFrom). A lab supervisor (Agent) authorized the experiment (actedOnBehalfOf).\n\n### What It Got Right\n\n- **Simple core with expressive extensions.** The three types and four relations cover most provenance scenarios. More complex cases use PROV extensions.\n- **Multiple serializations.** PROV can be expressed as RDF (PROV-O, the OWL ontology), XML (PROV-XML), or a JSON-based format (PROV-JSON). Different tools can use the format they prefer.\n- **Time-aware.** Activities have start and end times. Entities have generation times. This enables temporal reasoning and querying.\n- **Widely adopted.** Used in scientific workflow systems, digital preservation, data journalism, and regulatory compliance.\n\n### What It Got Wrong or Left Unfinished\n\n- **No enforcement mechanism.** PROV describes what happened; it does not cryptographically prove it. A malicious agent can record false provenance. PROV must be paired with external verification mechanisms.\n- **No canonical identity for entities.** Two systems may describe the same real-world entity with different identifiers, and PROV provides no built-in way to resolve this.\n- **Complexity in practice.** While the core is simple, real-world provenance graphs grow large and complex quickly. Querying and visualizing large PROV graphs is computationally expensive.\n- **Ambiguity in agent responsibility.** The distinction between \"associated with\" and \"responsible for\" is not always clear, leading to inconsistent usage across systems.\n\n### How It Connects to Other Ideas\n\n**Semantic Web and OWL.** PROV-O is an OWL ontology, which means it can be reasoned over with standard semantic web tools. Provenance queries can use SPARQL, the standard query language for RDF.\n\n**Digital signatures and verifiable credentials.** PROV records what happened; digital signatures prove who said it happened. Combining PROV with cryptographic signatures produces verifiable provenance — a record whose origin can be authenticated.\n\n**OIP receipt export.** An OIP invocation maps directly to PROV: the invocation is an Activity, the caller is an Agent, the output is an Entity, and a replay is a Derivation. Repair operations map to PROV's Revision relation. Exporting OIP receipts as PROV-O makes them interoperable with provenance tools, academic workflows, and legal audit systems without requiring custom parsers.\n\n### Sources\n\n- W3C. (2013). \"PROV Model Primer.\" W3C Working Group Note. https://www.w3.org/TR/prov-primer/\n- W3C. (2013). \"PROV-O: The PROV Ontology.\" W3C Recommendation. https://www.w3.org/TR/prov-o/\n- Lebo, T., Sahoo, S., McGuinness, D., et al. (2013). \"PROV-DM: The PROV Data Model.\" W3C Recommendation. https://www.w3.org/TR/prov-dm/\n\n---\n\n## Up the tree\n\n- [OIP root](https://miscsubjects.com/a/oip) — protocol root, zero-context entry\n- [Thinker Reference hub](https://miscsubjects.com/a/oip-thinker-reference) — full hierarchy map\n- [Protocol Concepts shelf](https://miscsubjects.com/a/oip-protocol-concepts) — siblings on this shelf\n- [Voxel graph article](https://miscsubjects.com/a/what-is-voxel-graph) — how pages link as voxels\n- [Self-describing protocol](https://miscsubjects.com/a/what-is-self-describing-protocol)\n\n## Related on this shelf\n\n- [What Is Autopoiesis](https://miscsubjects.com/a/what-is-autopoiesis)\n- [What Is Capability-Based Security](https://miscsubjects.com/a/what-is-capability-security)\n- [What Is a Capability Token](https://miscsubjects.com/a/what-is-capability-token)\n- [What Is a Confused Deputy](https://miscsubjects.com/a/what-is-confused-deputy)\n- [What Is Context as Cursor](https://miscsubjects.com/a/what-is-context-as-cursor)\n- [What Is a Convergence Catalogue](https://miscsubjects.com/a/what-is-convergence-catalogue)\n- [What Is a Falsification Surface](https://miscsubjects.com/a/what-is-falsification-surface)\n- [What Is HATEOAS](https://miscsubjects.com/a/what-is-hateoas)\n\n## Machine surfaces\n\n- Public page: `https://miscsubjects.com/a/what-is-prov`\n- JSON article: `https://miscsubjects.com/api/articles/what-is-prov`\n- OIP ask: `https://miscsubjects.com/api/dispatch?ask=What%20Is%20W3C%20PROV`"
  ],
  "facts": {
    "converted_from": "markdown",
    "original_updated": "2026-07-15T04:21:00.426Z",
    "register": "standard",
    "category": null
  },
  "type": "article",
  "updated": "2026-10-08T11:34:04.430Z",
  "version": 1,
  "hash": "d401f080cc0a04aba9d8ba44ecc20e1c2245a7d16e27a3ec221d15998c844e77",
  "styling": {
    "scope": "shared",
    "how": "no value on the page is set by hand: each comes from this theme, and each theme value becomes the CSS variable named beside it. PATCH https://miscsubjects.com/api/jarticles/theme changes them.",
    "widget_style": {
      "what": "every widget may carry style: {…}; these are the only keys it reads",
      "rotate": "degrees, a number",
      "offset_x": "pixels, a number",
      "offset_y": "pixels, a number",
      "pulse": "true to pulse"
    },
    "theme": {
      "color": {
        "page_bg": "#f5f5f7",
        "sheet_bg": "#ffffff",
        "ink": "#1d1d1f",
        "soft": "#424245",
        "muted": "#6e6e73",
        "dim": "#86868b",
        "line": "#d2d2d7",
        "accent": "#0071e3",
        "accent_soft": "rgba(0,113,227,0.08)",
        "link": "#0066cc",
        "selection": "rgba(0,113,227,0.18)",
        "widget_bg": "#f5f5f7",
        "widget_border": "#d2d2d7",
        "card_bg": "#ffffff",
        "code_bg": "#f5f5f7",
        "json_bg": "#161b19",
        "json_ink": "#e6e1d4",
        "json_key": "#7fd3c3",
        "json_string": "#e9c46a",
        "json_number": "#f4a261",
        "json_bool": "#c792ea",
        "json_null": "#928d7e",
        "json_punct": "#6b6759",
        "json_bar": "#0e1512",
        "kind_badge_bg": "#0e6e60",
        "kind_badge_ink": "#ffffff"
      },
      "color_dark": {
        "page_bg": "#000000",
        "sheet_bg": "#1d1d1f",
        "ink": "#f5f5f7",
        "soft": "#d2d2d7",
        "muted": "#a1a1a6",
        "dim": "#86868b",
        "line": "#424245",
        "accent": "#2997ff",
        "accent_soft": "rgba(41,151,255,0.12)",
        "link": "#2997ff",
        "selection": "rgba(41,151,255,0.25)",
        "widget_bg": "#2c2c2e",
        "widget_border": "#424245",
        "card_bg": "#1d1d1f",
        "code_bg": "#2c2c2e",
        "json_bg": "#0a0d0c",
        "json_ink": "#e6e1d4",
        "json_key": "#7fd3c3",
        "json_string": "#e9c46a",
        "json_number": "#f4a261",
        "json_bool": "#c792ea",
        "json_null": "#757062",
        "json_punct": "#5d665f",
        "json_bar": "#060807",
        "kind_badge_bg": "#4fc1ab",
        "kind_badge_ink": "#0b0f0d"
      },
      "font": {
        "display": "-apple-system,BlinkMacSystemFont,\"SF Pro Display\",\"SF Pro Text\",\"Helvetica Neue\",Helvetica,Arial,sans-serif",
        "body": "-apple-system,BlinkMacSystemFont,\"SF Pro Display\",\"SF Pro Text\",\"Helvetica Neue\",Helvetica,Arial,sans-serif",
        "mono": "ui-monospace,SFMono-Regular,\"SF Mono\",Menlo,Consolas,monospace",
        "google_fonts": ""
      },
      "size": {
        "body": "17px",
        "small": "17px",
        "eye": "17px",
        "lead": "17px",
        "h1": "52px",
        "h2": "34px",
        "h3": "22px",
        "byline": "17px",
        "h1_measure": "none",
        "code": "17px",
        "json": "17px",
        "widget_title": "17px"
      },
      "leading": {
        "body": "1.7",
        "head": "1.18",
        "lead": "1.5",
        "json": "1.6"
      },
      "weight": {
        "display": "700",
        "head": "700",
        "body": "400",
        "strong": "700",
        "eye": "700"
      },
      "tracking": {
        "eye": "0.14em",
        "display": "-0.03em",
        "body": "-0.006em",
        "badge": "0.08em"
      },
      "layout": {
        "sheet_width": "1000px",
        "text_width": "880px",
        "gutter": "16px",
        "sheet_padding": "56px 64px 64px",
        "sheet_padding_mobile": "24px 18px 40px",
        "sheet_margin": "28px auto 72px",
        "block_gap": "1.15em",
        "widget_gap": "28px",
        "grid_gap": "14px"
      },
      "border": {
        "sheet": "0px solid",
        "sheet_radius": "30px",
        "widget": "1px solid",
        "widget_radius": "24px",
        "card_radius": "24px",
        "badge_radius": "999px",
        "rule": "1px solid",
        "code_radius": "18px",
        "accent_bar": "3px"
      },
      "shadow": {
        "sheet": "0 1px 1px rgba(0,0,0,.02),0 6px 26px rgba(0,0,0,.05)",
        "widget": "none",
        "card_hover": "0 10px 28px -16px rgba(28,27,23,0.35)"
      },
      "motion": {
        "hover": "160ms ease"
      }
    }
  },
  "page": "https://miscsubjects.com/a/what-is-prov",
  "json": "https://miscsubjects.com/a/what-is-prov.json",
  "markdown": "https://miscsubjects.com/a/what-is-prov.md",
  "theme": "https://miscsubjects.com/article-theme.json",
  "calls": [
    {
      "what": "this article as a page (no key)",
      "method": "GET",
      "url": "https://miscsubjects.com/a/what-is-prov",
      "headers": {}
    },
    {
      "what": "this article as its object (no key)",
      "method": "GET",
      "url": "https://miscsubjects.com/a/what-is-prov.json",
      "headers": {}
    },
    {
      "what": "this article as Markdown (no key)",
      "method": "GET",
      "url": "https://miscsubjects.com/a/what-is-prov.md",
      "headers": {}
    },
    {
      "what": "the object with its hash, drafts too",
      "method": "GET",
      "url": "https://miscsubjects.com/api/jarticles/what-is-prov",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)"
      }
    },
    {
      "what": "one piece and that piece’s hash",
      "method": "GET",
      "url": "https://miscsubjects.com/api/jarticles/what-is-prov/at?path=facts",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)"
      }
    },
    {
      "what": "grep: every key or value that matches, with the path to change it",
      "method": "GET",
      "url": "https://miscsubjects.com/api/jarticles/what-is-prov/grep?q=owner",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)"
      }
    },
    {
      "what": "change pieces (set, merge, delete, append, insert, move); if-match is the hash",
      "method": "PATCH",
      "url": "https://miscsubjects.com/api/jarticles/what-is-prov",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json",
        "if-match": "<hash from the read>"
      },
      "body": {
        "ops": [
          {
            "op": "set",
            "path": "facts.example",
            "value": 1
          }
        ]
      }
    },
    {
      "what": "replace the whole object",
      "method": "PUT",
      "url": "https://miscsubjects.com/api/jarticles/what-is-prov",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json",
        "if-match": "<hash>"
      },
      "body": {
        "slug": "what-is-prov",
        "title": "…"
      }
    },
    {
      "what": "fetch every source, hash what came back and check the quote is in it",
      "method": "POST",
      "url": "https://miscsubjects.com/api/jarticles/what-is-prov/verify",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json"
      },
      "body": {}
    },
    {
      "what": "an Obsidian-style command",
      "method": "POST",
      "url": "https://miscsubjects.com/api/jarticles/cli",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json"
      },
      "body": {
        "command": "backlinks",
        "file": "what-is-prov"
      }
    }
  ]
}