@prefix : <https://medium.com/@JamesStakelum/why-the-triple-is-the-wrong-grain-1cad99e136f4#> .
@prefix schema: <http://schema.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# =============================================================================
# Demo instance data for "Why the Triple Is the Wrong Grain — An RDF Rebuttal"
# Flat Turtle, intended to be loaded manually into a single named graph
# (e.g. via DAV PUT + a Virtuoso graph assignment of your choosing).
# Each :RDFCorrectionPattern in the main document (:c1..:c12) already carries
# a suggested illustrative graph IRI in its :namedGraphExample property —
# use those as a starting point if you split this data across several named
# graphs instead of loading it as one. Where a correction's whole point is
# graph-level separation (:c2, :c3, :c7, :c11), that separation is expressed
# here at the claim/reification level instead, so the data is meaningful
# whether it ends up in one named graph or several.
# =============================================================================

# --- c1: event as a first-class resource, not a shattered set of edges ------
:beethovenNinthComposition a schema:CreateAction ;
    schema:agent :Beethoven ;
    schema:result :NinthSymphony ;
    schema:location :Vienna ;
    schema:startTime "1824"^^xsd:gYear .

# --- c2 / c7: source-attributed claims, queryable without averaging ---------
:scholarlyBiographySource a schema:CreativeWork ; schema:name "Thayer's Life of Beethoven (scholarly biography)"@en .
:sourceABiography a schema:CreativeWork ; schema:name "Source A (Bonn)"@en .
:sourceBBiography a schema:CreativeWork ; schema:name "Source B (Koblenz)"@en .

:claimComposedNinth a rdf:Statement ;
    rdf:subject :Beethoven ; rdf:predicate :composed ; rdf:object :NinthSymphony ;
    prov:wasAttributedTo :scholarlyBiographySource .

:claimBirthPlaceBonn a rdf:Statement ;
    rdf:subject :Beethoven ; rdf:predicate :birthPlace ; rdf:object :Bonn ;
    prov:wasAttributedTo :sourceABiography ;
    :epistemicStatus :DocumentedFact .

:claimBirthPlaceKoblenz a rdf:Statement ;
    rdf:subject :Beethoven ; rdf:predicate :birthPlace ; rdf:object :Koblenz ;
    prov:wasAttributedTo :sourceBBiography ;
    :epistemicStatus :DocumentedFact .

# --- c3: epistemic tier as a claim-level property ----------------------------
:claimBirthYear1770 a rdf:Statement ;
    rdf:subject :Beethoven ; rdf:predicate :birthYear ; rdf:object "1770"^^xsd:gYear ;
    :epistemicStatus :Inferred ;
    :inferredFrom "baptismal records"@en .

# --- c4: disambiguation via owl:sameAs + OWL2 identity closure --------------
:Beethoven a schema:Person ;
    schema:name "Ludwig van Beethoven"@en ;
    owl:sameAs <http://dbpedia.org/resource/Ludwig_van_Beethoven> .

# --- c5: purpose as a SHACL-required property, not an absent capability -----
:Scalpel a :SurgicalTool ;
    schema:description "Cutting tool for making precise incisions in living tissue."@en ;
    :hasPurpose "cut living tissue with precision"@en .

# --- c6 / c10: reified statement separates utterance, truth-claim, intent ---
:defendant a schema:Person .
:courtTranscript a schema:CreativeWork ; schema:name "Court transcript, defendant testimony"@en .
:defendantInnocenceUtterance a rdf:Statement ;
    rdf:subject :defendant ; rdf:predicate :claims ; rdf:object "I am innocent"@en ;
    :speechAct :INFORM ;
    :assertedBy :courtTranscript .

:beethovenCompositionUtterance a rdf:Statement ;
    rdf:subject :Beethoven ; rdf:predicate :composed ; rdf:object :NinthSymphony ;
    :speechAct :INFORM .

# --- c8: chronology asserted explicitly, independent of triple/document order
:precedes a owl:TransitiveProperty .
:poisoning a schema:Event ;
    prov:endedAtTime "1815-06-14T20:00:00"^^xsd:dateTime ;
    :precedes :death .
:death a schema:Event ;
    prov:startedAtTime "1815-06-15T06:00:00"^^xsd:dateTime .

# --- c9: bounded-grammar reasoning over an open predicate vocabulary --------
:hasCitizenship rdfs:subPropertyOf :hasRelationalStatus .
:Alice a schema:Person ; schema:name "Alice"@en ; :hasCitizenship :France .
:France a schema:Country ; schema:name "France"@en .

# --- c11: admission envelope — identity, provenance, lexical material, integrity
:claim42 a rdf:Statement ;
    rdf:subject :Beethoven ; rdf:predicate :composed ; rdf:object :NinthSymphony ;
    prov:wasAttributedTo :sourceX ;
    prov:generatedAtTime "2026-08-12T00:00:00Z"^^xsd:dateTime ;
    :contentHash "sha256:9f3a2b7c4d1e8f0a6b5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a"^^xsd:string .
:sourceX a schema:CreativeWork ; schema:name "Source X"@en .

# --- c12: OWL2 owl:equivalentClass is deterministic entailment, not embedding
:Composer owl:equivalentClass :MusicalCreator .
:Beethoven a :Composer .
