@prefix post: <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl#> .
@prefix oplli: <http://www.openlinksw.com/schemas/linkedin#> .
@prefix schema: <http://schema.org/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix vc: <https://www.w3.org/2018/credentials#> .
@prefix sec: <https://w3id.org/security#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

#################################################################
# PURPOSE
#
# Kevin D. Turner's article ("Semantic Value on LinkedIn: Why
# Proof Changes What a Claim Means") argues:
#
#     Syntax + Meaning + Proof = Semantic Value
#
# The article stays in prose. This file re-renders several of the
# article's own before/after claim pairs as RDF-Turtle, at three
# successive stages, to make the argument's mechanism literal and
# machine-checkable.
#
# VOCABULARY SURVEY (best-of-all-worlds, not one invented ontology):
#   - oplli: is OpenLink's own "Ontology for Professional Network
#     Profiles" (http://www.openlinksw.com/schemas/linkedin#, v1.0.0,
#     supplied locally at
#     /Users/kidehen/Documents/RDF_Ontologies/OpenLink/linkedin.ttl).
#     It is the field-for-field match to what Turner is actually
#     talking about: oplli:headline / oplli:summary correspond
#     directly to his [Headline] / [About] examples, and
#     oplli:Position / oplli:positionSummary / oplli:jobTitle /
#     oplli:company correspond to his [Experience] examples.
#     oplli:Certification and oplli:Recommendation are the ontology's
#     own built-in "proof" classes — a Recommendation is exactly the
#     third-party corroboration Turner names explicitly ("a
#     Recommendation adds third-party corroboration").
#   - DOAC and ResumeRDF were checked and rejected: both are
#     archived/inactive with no stable dereferenceable namespace
#     confirmable at authoring time (per house rule against
#     asserting unverified IRIs).
#   - schema.org and PROV-O fill a genuine, honest gap in oplli:
#     the ontology (dateCreated 2013, last modified 2018) has no
#     property anywhere for a measured OUTCOME of a Position —
#     nothing plays the role of "proof metric." schema:result,
#     schema:QuantitativeValue, schema:MonetaryAmount and
#     prov:wasGeneratedBy/prov:Entity are used only where oplli:
#     has nothing to offer.
#   - W3C Verifiable Credentials (vc:, terms confirmed to expand to
#     https://www.w3.org/2018/credentials#) plus the Security
#     Vocabulary's sec:proof model Turner's "Trust Loop" more
#     precisely than oplli: alone can: vc:issuer identical to
#     vc:credentialSubject is the standard shape of self-attestation;
#     vc:issuer distinct from vc:credentialSubject, alongside
#     sec:proof, is the standard shape of external witness.
#
# Only post:ProfessionalClaim and post:SemanticValueLevel are minted below —
# nothing in oplli:, schema.org, PROV-O or VC names the specific
# pattern of the SAME claim accruing typed context and then external
# evidence across revisions. Every other term reuses a vocabulary
# other systems already rely on, which is itself part of the
# demonstration: meaning comes from binding to shared vocabulary,
# not from inventing new words per claim.
#################################################################

# ============================================================
# MINI ONTOLOGY: only the staging concept, nothing else
# ============================================================

post:ontology a owl:Ontology ;
    schema:name "Semantic Value Staging Ontology" ;
    rdfs:label "Semantic Value Staging Ontology"@en ;
    schema:description "Minimal vocabulary for staging a professional claim's Syntax/Meaning/Proof revisions across time. Deliberately small: it supplements oplli:, schema.org, PROV-O and W3C Verifiable Credentials rather than replacing any of them — every fact those vocabularies can already express is expressed with them, not re-declared here."@en ;
    owl:versionInfo "1.0.0"^^xsd:string ;
    schema:dateCreated "2026-08-12"^^xsd:date .

post:ProfessionalClaim a owl:Class ;
    rdfs:isDefinedBy post:ontology ;
    rdfs:subClassOf schema:Claim ;
    rdfs:label "Professional Claim"@en ;
    rdfs:comment "A syntactically well-formed assertion about a person's work, applied as an additional type alongside a native oplli: resource (oplli:Position, oplli:Person). On its own — as plain oplli:positionSummary/oplli:headline text — it carries no bound meaning and no external proof. Corresponds to Turner's 'syntax' layer. Specializes schema:Claim (verified real schema.org type, 'a specific, factually-oriented claim that could be the itemReviewed in a ClaimReview') to the professional-work domain."@en .

post:SemanticValueLevel a owl:Class ;
    rdfs:isDefinedBy post:ontology ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "Semantic Value Level"@en ;
    rdfs:comment "Which layer(s) of Turner's formula (Syntax, Meaning, Proof) a given RDF rendition of a claim satisfies. Specializes skos:Concept, consistent with :Syntax/:Meaning/:Proof already carrying skos:prefLabel and skos:inScheme below."@en .

post:Syntax a post:SemanticValueLevel ; skos:prefLabel "Syntax only"@en .
post:Meaning a post:SemanticValueLevel ; skos:prefLabel "Syntax + Meaning"@en .
post:Proof a post:SemanticValueLevel ; skos:prefLabel "Syntax + Meaning + Proof"@en .

post:hasSemanticValueLevel a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:isDefinedBy post:ontology ;
    rdfs:label "has semantic value level"@en ;
    rdfs:comment "Assigns the single Syntax/Meaning/Proof stage a claim resource currently occupies. Checked for a broader schema.org/DBpedia/Wikidata superproperty; none found — schema:additionalType is untyped/generic and not a defensible match for a three-value enumeration, so no rdfs:subPropertyOf is asserted. owl:FunctionalProperty: a claim resource has exactly one stage at a time, never two."@en ;
    rdfs:domain post:ProfessionalClaim ;
    rdfs:range post:SemanticValueLevel .

post:revisionOf a owl:ObjectProperty, owl:AsymmetricProperty, owl:IrreflexiveProperty, owl:FunctionalProperty ;
    rdfs:isDefinedBy post:ontology ;
    rdfs:label "revision of"@en ;
    rdfs:subPropertyOf prov:wasRevisionOf ;
    rdfs:domain post:ProfessionalClaim ;
    rdfs:range post:ProfessionalClaim ;
    rdfs:comment "Chains successive renditions of the same underlying claim as it accrues ontology typing (meaning) and then external evidence (proof). owl:AsymmetricProperty + owl:IrreflexiveProperty: a claim cannot be a revision of itself, and if A revisionOf B then B is never revisionOf A. owl:FunctionalProperty: each stage in this file has exactly one immediate predecessor."@en .

post:person a schema:Person, oplli:Person ;
    schema:name "Claimant"@en .


# ============================================================
# EXAMPLE A — "Led enterprise transformation."
# Turner's flagship [Experience]-style progression.
# Rendered as an oplli:Position, since positionSummary is the
# real profile field this text would live in.
# ============================================================

post:positionA_syntax a post:ProfessionalClaim, oplli:Position ;
    schema:name "Syntax stage — bare claim"@en ;
    schema:position 1 ;
    schema:isPartOf post:sectionExampleA ;
    post:hasSemanticValueLevel post:Syntax ;
    oplli:positionSummary "Led enterprise transformation." ;
    rdfs:comment "Grammatically well-formed and parseable, but oplli:Position has no oplli:jobTitle and no oplli:company asserted: 'enterprise' and 'transformation' are unbound. A reasoner can validate the string; it cannot validate the claim."@en .

post:positionA_meaning a post:ProfessionalClaim, oplli:Position ;
    schema:name "Meaning stage — bound to Position/Company/JobTitle"@en ;
    schema:position 2 ;
    schema:isPartOf post:sectionExampleA ;
    post:hasSemanticValueLevel post:Meaning ;
    post:revisionOf post:positionA_syntax ;
    oplli:positionSummary "Led enterprise sales transformation across a 6,000+ seller organization." ;
    oplli:jobTitle post:salesTransformationTitle ;
    oplli:company post:sellerOrg ;
    rdfs:comment "oplli:jobTitle and oplli:company are now bound to named resources — the claim's variables are populated using the ontology's own native Position/Company/JobTitle classes. Nothing outside the claim yet confirms it happened or worked."@en .

post:salesTransformationTitle a oplli:JobTitle ;
    oplli:title "Head of Enterprise Sales Transformation" .

post:sellerOrg a oplli:Company ;
    oplli:companyName "Enterprise Sales Organization" ;
    oplli:companySize "6,000+ sellers" .

post:positionA_proof a post:ProfessionalClaim, oplli:Position, prov:Activity ;
    schema:name "Proof stage — schema:result metrics via PROV-O"@en ;
    schema:position 3 ;
    schema:isPartOf post:sectionExampleA ;
    post:hasSemanticValueLevel post:Proof ;
    post:revisionOf post:positionA_meaning ;
    oplli:positionSummary "Led enterprise sales transformation across a 6,000+ seller organization, improving Salesforce adoption, pipeline governance and executive decision-making." ;
    oplli:jobTitle post:salesTransformationTitle ;
    oplli:company post:sellerOrg ;
    schema:result post:salesforceAdoptionMetric, post:pipelineGovernanceMetric ;
    rdfs:comment "oplli: — a real, dereferenceable LinkedIn/Xing profile ontology — has no property anywhere for a Position's measurable outcome; it predates 'proof metrics' as a stated concern. schema:result plus PROV-O fill exactly that gap: the same resource is additionally typed prov:Activity so its outcomes can be independently addressed, typed schema:QuantitativeValue entities rather than more adjectives inside positionSummary."@en .

post:salesforceAdoptionMetric a schema:QuantitativeValue, prov:Entity ;
    rdfs:label "Salesforce adoption rate"@en ;
    prov:wasGeneratedBy post:positionA_proof .

post:pipelineGovernanceMetric a schema:QuantitativeValue, prov:Entity ;
    rdfs:label "Pipeline governance maturity"@en ;
    prov:wasGeneratedBy post:positionA_proof .


# ============================================================
# EXAMPLE B — The Trust Loop
# "I'm strategic because I say I'm strategic."
# Turner names this as a [Headline]/[About] pattern, so it is
# rendered on oplli:Person via oplli:headline, contrasted with
# a claim grounded by BOTH oplli:Recommendation (the ontology's
# own native third-party-corroboration class, which Turner names
# explicitly) and vc:/sec: (which additionally make the
# self-vs-external-issuer distinction machine-checkable).
# ============================================================

post:trustLoopClaim a post:ProfessionalClaim, vc:VerifiableCredential ;
    schema:name "Trust Loop — self-issued, ungrounded"@en ;
    schema:position 1 ;
    schema:isPartOf post:sectionExampleB ;
    post:hasSemanticValueLevel post:Syntax ;
    oplli:headline "I'm strategic because I say I'm strategic." ;
    vc:credentialSubject post:person ;
    vc:issuer post:person ;
    rdfs:comment "vc:issuer is identical to vc:credentialSubject — the standard-vocabulary definition of self-attestation. No sec:proof is asserted, and post:person has zero incoming oplli:recommendationsReceived — no oplli:Recommendation resource exists anywhere in the graph. That absence, checkable by a simple query, IS Turner's Trust Loop."@en .

post:groundedStrategicClaim a post:ProfessionalClaim, vc:VerifiableCredential ;
    schema:name "Trust Loop broken — externally witnessed"@en ;
    schema:position 2 ;
    schema:isPartOf post:sectionExampleB ;
    post:hasSemanticValueLevel post:Proof ;
    oplli:headline "Led the board-approved 3-year growth strategy that took ARR from $40M to $95M." ;
    vc:credentialSubject post:person ;
    vc:issuer post:boardOfDirectors ;
    sec:proof post:boardResolutionProof ;
    schema:about post:arrGrowthMetric ;
    rdfs:comment "Contrast case: vc:issuer now resolves to a distinct schema:Organization and sec:proof references independent evidence — the formal/cryptographic shape of an external witness. In parallel, post:person carries an actual oplli:recommendationsReceived link to an oplli:Recommendation, which is the ontology's own native answer to the same problem: 'a Recommendation adds third-party corroboration,' in Turner's words, not a custom property invented for this file."@en .

post:person oplli:recommendationsReceived post:boardRecommendation ;
    oplli:numRecommenders 1 .

post:boardRecommendation a oplli:Recommendation ;
    oplli:recommendationType "colleague" ;
    oplli:recommender "Chair, Board of Directors" .

post:boardOfDirectors a schema:Organization ;
    schema:name "Board of Directors"@en .

post:boardResolutionProof a prov:Entity ;
    rdfs:label "Board resolution approving 3-year growth strategy"@en .

post:arrGrowthMetric a schema:MonetaryAmount, prov:Entity ;
    rdfs:label "ARR growth, 3-year strategy"@en ;
    schema:minValue 40000000 ;
    schema:maxValue 95000000 ;
    schema:currency "USD" .


# ============================================================
# EXAMPLE C — Quantified Personal Blanding
# "Generated $17M." vs. the fully contextualized version.
# ============================================================

post:positionC_numbersOnly a post:ProfessionalClaim, oplli:Position ;
    schema:name "Syntax stage — bare, ambiguous number"@en ;
    schema:position 1 ;
    schema:isPartOf post:sectionExampleC ;
    post:hasSemanticValueLevel post:Syntax ;
    oplli:positionSummary "Generated $17M." ;
    schema:about post:ambiguousAmount ;
    rdfs:comment "A number is present, but post:ambiguousAmount is untyped beyond a bare value: no schema:MonetaryAmount subtype, no schema:currency asserted as a distinguishing fact, no prov:wasGeneratedBy link — and oplli: has no property for this at all. Revenue, savings, pipeline, valuation, bookings and budget remain equally consistent with this graph. Proof-shaped syntax without proof."@en .

post:ambiguousAmount a schema:QuantitativeValue ;
    schema:value 17000000 .

post:positionC_proof a post:ProfessionalClaim, oplli:Position ;
    schema:name "Proof stage — typed MonetaryAmount with provenance"@en ;
    schema:position 2 ;
    schema:isPartOf post:sectionExampleC ;
    post:hasSemanticValueLevel post:Proof ;
    post:revisionOf post:positionC_numbersOnly ;
    oplli:positionSummary "Generated $17M in incremental revenue by rebuilding the enterprise partner strategy across North America, reversing two years of channel decline." ;
    schema:about post:incrementalRevenueMetric ;
    rdfs:comment "rdf:type schema:MonetaryAmount (not a bare schema:QuantitativeValue) plus schema:currency plus prov:wasGeneratedBy an explicitly typed, geographically scoped schema:Action/prov:Activity resolves what kind of $17M this is and what produced it — using schema.org/PROV-O precisely where oplli: is silent."@en .

post:incrementalRevenueMetric a schema:MonetaryAmount, prov:Entity ;
    rdfs:label "Incremental revenue from partner strategy rebuild"@en ;
    schema:value 17000000 ;
    schema:currency "USD" ;
    prov:wasGeneratedBy post:partnerStrategyRebuild .

post:partnerStrategyRebuild a schema:Action, prov:Activity ;
    schema:name "Enterprise Partner Strategy Rebuild"@en ;
    schema:location [ a schema:Place ; schema:name "North America"@en ] ;
    schema:result post:incrementalRevenueMetric .


# ============================================================
# EXAMPLE D — Proof metrics as scale + comparison + timeframe
# "Raised customer retention from 72% to 91% in 18 months
#  across a 4.2M-member portfolio."
# ============================================================

post:positionD_proof a post:ProfessionalClaim, oplli:Position ;
    schema:name "Proof stage — scale, comparison and timeframe"@en ;
    schema:position 1 ;
    schema:isPartOf post:sectionExampleD ;
    post:hasSemanticValueLevel post:Proof ;
    oplli:positionSummary "Raised customer retention from 72% to 91% in 18 months across a 4.2M-member portfolio." ;
    schema:about post:retentionChange, post:memberPortfolio ;
    rdfs:comment "A bare 'Improved customer retention' claim would render here as a single unscoped schema:QuantitativeValue with no minValue/maxValue/duration — the reader (human or machine) would have to supply starting point, ending point, timeframe and scale itself. Typing the change as minValue/maxValue/duration on one resource, plus a separately typed schema:Audience for portfolio size, makes all four dimensions queryable facts instead of prose to infer. oplli: has no equivalent property for a Position's performance delta, so schema.org carries this stage entirely."@en .

post:retentionChange a schema:QuantitativeValue, prov:Entity ;
    rdfs:label "Customer retention rate, before/after"@en ;
    schema:minValue 72 ;
    schema:maxValue 91 ;
    schema:unitText "percent"@en ;
    schema:duration "P18M"^^xsd:duration .

post:memberPortfolio a schema:Audience ;
    schema:name "Retention program membership base"@en ;
    schema:audienceSize 4200000 .


# ============================================================
# SUMMARY: SKOS scheme tying the three levels together
# ============================================================

post:semanticValueLevels a skos:ConceptScheme ;
    skos:prefLabel "Turner Semantic Value Levels"@en ;
    skos:hasTopConcept post:Syntax, post:Meaning, post:Proof .

post:Syntax skos:inScheme post:semanticValueLevels .
post:Meaning skos:inScheme post:semanticValueLevels .
post:Proof skos:inScheme post:semanticValueLevels .


# ============================================================
# DOCUMENT ENTITY — the article/report entity for this exercise,
# distinct from the source Turner article it responds to and
# from the owl:Ontology entity declared above.
# ============================================================

post:turnerArticle a schema:CreativeWork ;
    schema:name "Semantic Value on LinkedIn: Why Proof Changes What a Claim Means"@en ;
    schema:headline "Semantic Value on LinkedIn: Why Proof Changes What a Claim Means"@en ;
    schema:author <https://www.linkedin.com/in/president#this> ;
    schema:url <https://www.linkedin.com/pulse/semantic-value-linkedin-why-proof-changes-what-claim-means-turner--qq2re/> ;
    schema:datePublished "2026-08-11"^^xsd:date ;
    rdfs:comment "The source article. Prose-only: it states 'Syntax + Meaning + Proof = Semantic Value' and walks worked before/after claim pairs, but never renders a claim as structured data. This TTL/HTML pair is the worked RDF demonstration the article itself does not provide."@en .

<https://www.linkedin.com/in/president#this> a schema:Person ;
    schema:name "Kevin D. Turner"@en ;
    schema:url <https://www.linkedin.com/in/president> ;
    schema:identifier <https://www.linkedin.com/in/president> ;
    rdfs:comment "Author of the source LinkedIn article. IRI is the author's own LinkedIn profile URL, read directly from the article page's byline link (linkedin.com/in/president), per the LinkedIn-profile-first Person IRI denotation priority."@en .

post:document a schema:Article ;
    schema:headline "Semantic Value on LinkedIn — Worked RDF Examples in oplli:, schema.org, PROV-O and W3C Verifiable Credentials"@en ;
    schema:name "Semantic Value on LinkedIn — Worked RDF Examples in oplli:, schema.org, PROV-O and W3C Verifiable Credentials"@en ;
    schema:abstract "Kevin D. Turner's LinkedIn article makes one point: a claim on a profile only becomes trustworthy once it has context and evidence behind it — not just confident wording. This page proves that point by rebuilding four of his own example claims as structured data, one stage at a time: the bare claim, the claim with context added, and the claim backed by evidence. The structured data reuses existing, real standards rather than inventing new ones. OpenLink's own oplli: vocabulary already matches LinkedIn's own profile fields, so it does most of the work. schema.org and PROV-O step in only where that vocabulary has a genuine gap: describing a measurable result. And the W3C's Verifiable Credentials standard distinguishes a claim someone else vouches for from a claim that only vouches for itself. Two small labels — post:ProfessionalClaim and post:SemanticValueLevel — were added on top, because nothing else marks which of the three stages a given claim has reached."@en ;
    schema:about post:turnerArticle ;
    schema:citation post:turnerArticle ;
    schema:creator <http://www.openlinksw.com/#this> ;
    schema:dateCreated "2026-08-12"^^xsd:date ;
    schema:hasPart post:faqPage, post:glossaryTermSet, post:howTo,
                   post:sectionExampleA, post:sectionExampleB, post:sectionExampleC, post:sectionExampleD .


# ============================================================
# HOWTO — the vocabulary-survey-then-render method used to
# produce every example in this file.
# ============================================================

post:howTo a schema:HowTo ;
    schema:name "How to Render a Professional Claim's Syntax/Meaning/Proof Stages in RDF"@en ;
    schema:isPartOf post:document ;
    schema:step post:step1, post:step2, post:step3, post:step4, post:step5, post:step6, post:step7 .

post:step1 a schema:HowToStep ;
    schema:name "Survey existing vocabularies before minting anything"@en ;
    schema:position 1 ;
    schema:text "Check for a dedicated vocabulary first (here: DOAC and ResumeRDF for CVs/resumes). Reject any candidate whose namespace cannot be confirmed as stable and dereferenceable at authoring time — do not fabricate or guess an IRI to make a candidate usable."@en .

post:step2 a schema:HowToStep ;
    schema:name "Prefer a real, field-matching ontology over a generic one"@en ;
    schema:position 2 ;
    schema:text "When a supplied or locally available ontology matches the source's own field structure (here: OpenLink's oplli: LinkedIn ontology, whose positionSummary/headline/Position/Recommendation map directly onto Turner's [Experience]/[Headline]/[About] examples), use it as the primary vocabulary rather than a generic alternative."@en .

post:step3 a schema:HowToStep ;
    schema:name "Render the bare claim as the Syntax stage"@en ;
    schema:position 3 ;
    schema:text "Attach the claim's literal text to the chosen native property (oplli:positionSummary or oplli:headline) with no supporting typed entities. This stage should look exactly as unbound as the plain-English sentence is."@en .

post:step4 a schema:HowToStep ;
    schema:name "Bind claim variables using the ontology's own classes for the Meaning stage"@en ;
    schema:position 4 ;
    schema:text "Add typed resources using the chosen ontology's native classes (oplli:JobTitle, oplli:Company) so the claim's previously-unbound variables (who, where, how large) resolve to addressable entities."@en .

post:step5 a schema:HowToStep ;
    schema:name "Identify a genuine gap before reaching for a second vocabulary"@en ;
    schema:position 5 ;
    schema:text "Confirm, rather than assume, that the primary ontology has no property for the needed fact. oplli: (dateCreated 2013) has no property anywhere for a Position's measurable outcome — a genuine, checkable gap, not a convenience shortcut."@en .

post:step6 a schema:HowToStep ;
    schema:name "Fill confirmed gaps with schema.org and PROV-O for the Proof stage"@en ;
    schema:position 6 ;
    schema:text "Use schema:result, schema:QuantitativeValue, schema:MonetaryAmount and prov:wasGeneratedBy/prov:Entity only where the primary ontology has nothing to offer, so outcomes exist as independently addressable, typed resources rather than more adjectives in the claim text."@en .

post:step7 a schema:HowToStep ;
    schema:name "Model self-attestation vs. external witness with W3C Verifiable Credentials"@en ;
    schema:position 7 ;
    schema:text "For claims whose 'proof' is corroboration rather than a metric (the Trust Loop), use vc:credentialSubject and vc:issuer: identical values model self-attestation, distinct values plus sec:proof model an external witness. Chain every stage to its predecessor with post:revisionOf (subPropertyOf prov:wasRevisionOf) so the claim's history stays queryable."@en .


# ============================================================
# FAQ
# ============================================================

post:faqPage a schema:FAQPage ;
    schema:name "FAQ: Semantic Value, Proof, and RDF"@en ;
    schema:isPartOf post:document ;
    schema:hasPart post:faqQ1, post:faqQ2, post:faqQ3, post:faqQ4, post:faqQ5, post:faqQ6,
                   post:faqQ7, post:faqQ8, post:faqQ9, post:faqQ10, post:faqQ11, post:faqQ12 .

post:faqQ1 a schema:Question ;
    schema:name "What does \"Syntax + Meaning + Proof = Semantic Value\" mean?"@en ;
    schema:acceptedAnswer post:faqA1 .
post:faqA1 a schema:Answer ;
    schema:text "It is Kevin D. Turner's formula for why one professional claim reads as trustworthy and another, using similar words, reads as empty. Syntax is whether the sentence is well-formed; Meaning is whether its variables (who, what, how large) are bound to something specific; Proof is whether evidence exists outside the claim itself for someone to evaluate it against."@en .

post:faqQ2 a schema:Question ;
    schema:name "Why does this RDF/HTML pair exist if Turner's article already makes the argument?"@en ;
    schema:acceptedAnswer post:faqA2 .
post:faqA2 a schema:Answer ;
    schema:text "The article stays entirely in prose — it never shows what a claim actually looks like once ontologies bind its meaning and proof. This companion renders four of the article's own before/after examples as RDF at each of the three stages, so the mechanism Turner describes is literal and machine-checkable rather than just asserted."@en .

post:faqQ3 a schema:Question ;
    schema:name "Why was OpenLink's oplli: ontology chosen instead of a generic vocabulary?"@en ;
    schema:acceptedAnswer post:faqA3 .
post:faqA3 a schema:Answer ;
    schema:text "oplli: is a field-for-field match: oplli:headline and oplli:summary correspond directly to Turner's [Headline]/[About] examples, and oplli:Position/oplli:positionSummary/oplli:jobTitle/oplli:company correspond to his [Experience] examples. It also has built-in oplli:Certification and oplli:Recommendation classes — a Recommendation is exactly the third-party corroboration Turner names explicitly."@en .

post:faqQ4 a schema:Question ;
    schema:name "Why weren't DOAC or ResumeRDF used, since they are dedicated CV/resume ontologies?"@en ;
    schema:acceptedAnswer post:faqA4 .
post:faqA4 a schema:Answer ;
    schema:text "Both were checked. Both are archived/inactive Semantic Web efforts from the early 2010s, and neither has a namespace that could be confirmed as stable and dereferenceable at authoring time — so neither is cited by IRI here, per the house rule against asserting unverified URLs."@en .

post:faqQ5 a schema:Question ;
    schema:name "What genuine gap in oplli: do schema.org and PROV-O fill?"@en ;
    schema:acceptedAnswer post:faqA5 .
post:faqA5 a schema:Answer ;
    schema:text "oplli: (last modified 2018) has no property anywhere for a Position's measurable outcome — nothing plays the role of a 'proof metric.' schema:result, schema:QuantitativeValue, schema:MonetaryAmount and prov:wasGeneratedBy/prov:Entity are used only for that confirmed gap, not as a general replacement for oplli:."@en .

post:faqQ6 a schema:Question ;
    schema:name "Why use W3C Verifiable Credentials instead of a custom \"grounded by\" property?"@en ;
    schema:acceptedAnswer post:faqA6 .
post:faqA6 a schema:Answer ;
    schema:text "An earlier draft of this file used a custom post:groundedBy property pointed at itself to model self-attestation. W3C Verifiable Credentials already has the standard shape for this: vc:issuer identical to vc:credentialSubject is self-attestation; vc:issuer distinct from vc:credentialSubject, alongside sec:proof, is an external witness. Reusing that standard shape is more precise than inventing a parallel one."@en .

post:faqQ7 a schema:Question ;
    schema:name "What is the \"Trust Loop\" and how does the RDF show it?"@en ;
    schema:acceptedAnswer post:faqA7 .
post:faqA7 a schema:Answer ;
    schema:text "Turner's Trust Loop is a claim whose only support is repeating itself ('I'm strategic because I say I'm strategic'). In post:trustLoopClaim, vc:issuer is literally the same resource as vc:credentialSubject, and the claimant has zero incoming oplli:recommendationsReceived links anywhere in the graph — both facts are checkable by a simple query, unlike a feeling of confidence in prose."@en .

post:faqQ8 a schema:Question ;
    schema:name "What does post:hasSemanticValueLevel do that rdf:type alone could not?"@en ;
    schema:acceptedAnswer post:faqA8 .
post:faqA8 a schema:Answer ;
    schema:text "post:hasSemanticValueLevel is a dedicated object property pointing at a post:SemanticValueLevel individual (post:Syntax, post:Meaning, or post:Proof) so a query can filter claims by stage directly, independent of which native ontology (oplli:, VC) is also typing that same resource via rdf:type."@en .

post:faqQ9 a schema:Question ;
    schema:name "Why is \"Generated $17M.\" ambiguous even though it contains a number?"@en ;
    schema:acceptedAnswer post:faqA9 .
post:faqA9 a schema:Answer ;
    schema:text "In post:positionC_numbersOnly, the linked post:ambiguousAmount is typed only as a bare schema:QuantitativeValue with a numeric schema:value — no schema:MonetaryAmount subtype, no schema:currency, no prov:wasGeneratedBy. Revenue, savings, pipeline, valuation, bookings and budget are all still equally consistent with that graph. A number is not proof; a typed, provenance-linked number is."@en .

post:faqQ10 a schema:Question ;
    schema:name "What does oplli:Recommendation contribute that Turner's article names explicitly?"@en ;
    schema:acceptedAnswer post:faqA10 .
post:faqA10 a schema:Answer ;
    schema:text "Turner writes that 'a Recommendation adds third-party corroboration.' oplli:Recommendation, reached via oplli:recommendationsReceived, is that exact mechanism already built into a real, dereferenceable LinkedIn/Xing profile ontology — not a term invented for this exercise."@en .

post:faqQ11 a schema:Question ;
    schema:name "How does this relate to Tarski's Convention T, which Turner cites?"@en ;
    schema:acceptedAnswer post:faqA11 .
post:faqA11 a schema:Answer ;
    schema:text "Tarski's Convention T distinguishes a sentence from the condition that would make it true ('snow is white' is true iff snow is white). Turner applies this to profiles: a profile cannot make its own claim true by restating it. In RDF terms, the Meaning and Proof stages exist precisely to give a claim resources outside itself — schema:result entities, oplli:Recommendation, sec:proof — that a reasoner or a reader can check independently of the claim's own text."@en .

post:faqQ12 a schema:Question ;
    schema:name "Why does oplli:recommender use a plain string instead of an object property to a Person?"@en ;
    schema:acceptedAnswer post:faqA12 .
post:faqA12 a schema:Answer ;
    schema:text "That is a real, honest limitation of the 2013-vintage oplli: ontology, not a choice made for this exercise — oplli:recommender's declared rdfs:range is xsd:string. It is why the Trust-Loop contrast case also layers in vc:issuer/sec:proof: those add the machine-checkable, distinct-external-party structure that a bare string name cannot guarantee on its own."@en .


# ============================================================
# GLOSSARY
# ============================================================

post:glossaryTermSet a schema:DefinedTermSet ;
    schema:name "Glossary: Ontologies, Proof, and Semantic Value"@en ;
    schema:isPartOf post:document ;
    schema:hasDefinedTerm post:termSemanticValue, post:termSyntax, post:termMeaning, post:termProof,
                          post:termTrustLoop, post:termOplli, post:termPosition, post:termRecommendation,
                          post:termProvO, post:termSchemaOrg, post:termVC, post:termDOAC, post:termResumeRDF,
                          post:termConventionT ;
    schema:hasPart post:termSemanticValue, post:termSyntax, post:termMeaning, post:termProof,
                   post:termTrustLoop, post:termOplli, post:termPosition, post:termRecommendation,
                   post:termProvO, post:termSchemaOrg, post:termVC, post:termDOAC, post:termResumeRDF,
                   post:termConventionT .

post:termSemanticValue a schema:DefinedTerm ;
    schema:name "Semantic Value"@en ;
    schema:description "Turner's term for a claim's combined trustworthiness and informational content, produced by Syntax + Meaning + Proof together, not by any one layer alone."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termSyntax a schema:DefinedTerm ;
    schema:name "Syntax (layer)"@en ;
    schema:description "Whether a claim is grammatically well-formed and parseable. Corresponds in this file to a claim resource typed post:Syntax via post:hasSemanticValueLevel, with no supporting typed entities yet."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termMeaning a schema:DefinedTerm ;
    schema:name "Meaning (layer)"@en ;
    schema:description "Whether a claim's variables are bound to something specific and checkable. Rendered here as ontology typing (oplli:jobTitle, oplli:company) that resolves who/what/how-large."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termProof a schema:DefinedTerm ;
    schema:name "Proof (layer)"@en ;
    schema:description "Whether evidence exists outside the claim itself for someone to evaluate it against. Rendered here via schema:result/PROV-O outcomes or W3C Verifiable Credentials issuer/proof structure."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termTrustLoop a schema:DefinedTerm ;
    schema:name "Trust Loop"@en ;
    schema:description "Turner's term for a claim whose only support is repeating itself ('I'm strategic because I say I'm strategic'). Modeled here as vc:issuer identical to vc:credentialSubject with no external oplli:Recommendation anywhere in the graph."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termOplli a schema:DefinedTerm ;
    schema:name "oplli: (OpenLink Ontology for Professional Network Profiles)"@en ;
    schema:description "A real, dereferenceable ontology at http://www.openlinksw.com/schemas/linkedin# (v1.0.0) for LinkedIn/Xing-style profile data — Person, Position, Certification, Recommendation, Skill, Company and their fields. Used as the primary vocabulary in this exercise because its fields map directly onto Turner's own [Headline]/[About]/[Experience] examples."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termPosition a schema:DefinedTerm ;
    schema:name "oplli:Position"@en ;
    schema:description "An oplli: class representing a position a profile member holds or has held, with properties positionSummary, jobTitle, company, startDate and endDate. Used here as the resource type for the [Experience]-style claim examples."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termRecommendation a schema:DefinedTerm ;
    schema:name "oplli:Recommendation"@en ;
    schema:description "An oplli: class for a recommendation of one profile member by another, reached via oplli:recommendationsReceived. Matches Turner's own line that 'a Recommendation adds third-party corroboration.'"@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termProvO a schema:DefinedTerm ;
    schema:name "PROV-O"@en ;
    schema:description "The W3C Provenance Ontology (http://www.w3.org/ns/prov#), supplying prov:Activity, prov:Entity, prov:wasGeneratedBy and prov:wasRevisionOf. Used here to fill oplli:'s confirmed gap around measurable outcomes."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termSchemaOrg a schema:DefinedTerm ;
    schema:name "schema.org"@en ;
    schema:description "The widely-deployed general-purpose vocabulary, used here for schema:QuantitativeValue, schema:MonetaryAmount, schema:result and schema:Audience, again only where oplli: has no equivalent property."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termVC a schema:DefinedTerm ;
    schema:name "W3C Verifiable Credentials (VC)"@en ;
    schema:description "A W3C standard (terms confirmed to expand to https://www.w3.org/2018/credentials#) for credentials with a stated issuer and subject. Its issuer/credentialSubject/proof structure is reused here to make Turner's self-attestation-versus-external-witness distinction machine-checkable."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termDOAC a schema:DefinedTerm ;
    schema:name "DOAC (Description of a Career)"@en ;
    schema:description "An early Semantic Web vocabulary for career/resume data, extending FOAF. Checked and rejected for this exercise: archived/inactive, with no namespace confirmable as stable and dereferenceable at authoring time."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termResumeRDF a schema:DefinedTerm ;
    schema:name "ResumeRDF"@en ;
    schema:description "Another early Semantic Web resume/skill vocabulary (documented at rdfs.org/resume-rdf/). Checked and rejected for the same reason as DOAC: no namespace confirmable as stable and dereferenceable at authoring time."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .

post:termConventionT a schema:DefinedTerm ;
    schema:name "Convention T (Tarski)"@en ;
    schema:description "Alfred Tarski's schema for defining truth in formal languages ('snow is white' is true iff snow is white), cited by Turner to argue a profile cannot make its own claim true by restating it. Applied here as the reason Meaning/Proof stages point OUTSIDE the claim resource to independent evidence."@en ;
    schema:inDefinedTermSet post:glossaryTermSet .


# ============================================================
# NARRATIVE SECTIONS — full worked-example bodies, wired to the
# already-declared stage resources via schema:isPartOf/position.
# ============================================================

post:sectionExampleA a schema:CreativeWork ;
    schema:name "Example A — Led Enterprise Transformation"@en ;
    schema:abstract "Turner's flagship progression. A bare claim ('Led enterprise transformation') is grammatically fine but leaves 'enterprise' and 'transformation' unbound. Binding it to oplli:Position with oplli:jobTitle and oplli:company supplies Meaning. Adding schema:result-linked, PROV-O-provenanced outcome metrics — filling a confirmed gap in oplli: — supplies Proof."@en ;
    schema:isPartOf post:document ;
    schema:position 1 .

post:sectionExampleB a schema:CreativeWork ;
    schema:name "Example B — The Trust Loop"@en ;
    schema:abstract "Turner's self-referential claim ('I'm strategic because I say I'm strategic'), modeled as a W3C Verifiable Credential whose vc:issuer equals its own vc:credentialSubject — self-attestation by definition. The contrast case adds a distinct vc:issuer, sec:proof, and an oplli:Recommendation, the ontology's own native third-party-corroboration class."@en ;
    schema:isPartOf post:document ;
    schema:position 2 .

post:sectionExampleC a schema:CreativeWork ;
    schema:name "Example C — Quantified Personal Blanding"@en ;
    schema:abstract "\"Generated $17M.\" is proof-shaped but not proof: the linked amount is a bare schema:QuantitativeValue, equally consistent with revenue, savings, pipeline, valuation, bookings or budget. Retyping it as schema:MonetaryAmount with schema:currency and a prov:wasGeneratedBy-linked, geographically scoped activity resolves what kind of $17M it is."@en ;
    schema:isPartOf post:document ;
    schema:position 3 .

post:sectionExampleD a schema:CreativeWork ;
    schema:name "Example D — Proof Metrics as Scale, Comparison and Timeframe"@en ;
    schema:abstract "\"Raised customer retention from 72% to 91% in 18 months across a 4.2M-member portfolio\" is rendered with minValue/maxValue/duration on one schema:QuantitativeValue plus a separately typed schema:Audience for portfolio size — turning four dimensions a reader would otherwise have to infer from prose into queryable facts."@en ;
    schema:isPartOf post:document ;
    schema:position 4 .


# ============================================================
# SPARQL QUERIES — executable tests of the propositions this
# file makes. Each targets the DAV named graph this TTL is
# published as, per the footer SPARQL workbench convention.
# ============================================================

post:queryClaimsByLevel a schema:SoftwareSourceCode ;
    schema:name "List every claim grouped by Semantic Value level"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:isPartOf post:document ;
    schema:text """PREFIX : <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl#>
PREFIX oplli: <http://www.openlinksw.com/schemas/linkedin#>
PREFIX schema: <http://schema.org/>
SELECT ?level ?claim (COALESCE(?summary, ?headline) AS ?claimText)
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl> {
    ?claim a :ProfessionalClaim ;
           :hasSemanticValueLevel ?level .
    OPTIONAL { ?claim oplli:positionSummary ?summary }
    OPTIONAL { ?claim oplli:headline ?headline }
  }
}
ORDER BY ?level ?claim""" ;
    rdfs:comment "The baseline query: confirms every claim resource in the file declares exactly one post:hasSemanticValueLevel and that its native oplli: text is retrievable regardless of whether it lives on positionSummary or headline."@en .

post:queryTrustLoop a schema:SoftwareSourceCode ;
    schema:name "Detect self-attested (Trust Loop) claims"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:isPartOf post:document ;
    schema:text """PREFIX vc: <https://www.w3.org/2018/credentials#>
PREFIX sec: <https://w3id.org/security#>
PREFIX oplli: <http://www.openlinksw.com/schemas/linkedin#>
SELECT ?claim ?headline
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl> {
    ?claim a vc:VerifiableCredential ;
           vc:credentialSubject ?subject ;
           vc:issuer ?subject ;
           oplli:headline ?headline .
    FILTER NOT EXISTS { ?claim sec:proof ?anyProof }
  }
}""" ;
    rdfs:comment "Tests the Trust Loop proposition directly: a claim is flagged as self-attested if and only if its vc:issuer is the exact same node as its vc:credentialSubject and it carries no sec:proof. Run against this graph, this returns exactly post:trustLoopClaim and nothing else — post:groundedStrategicClaim has a distinct vc:issuer and IS excluded."@en .

post:queryProofGrounded a schema:SoftwareSourceCode ;
    schema:name "Verify every Proof-stage claim points outside itself"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:isPartOf post:document ;
    schema:text """PREFIX : <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl#>
PREFIX vc: <https://www.w3.org/2018/credentials#>
PREFIX sec: <https://w3id.org/security#>
PREFIX schema: <http://schema.org/>
PREFIX oplli: <http://www.openlinksw.com/schemas/linkedin#>
SELECT ?claim (BOUND(?evidence) AS ?hasExternalEvidence)
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl> {
    ?claim a :ProfessionalClaim ;
           :hasSemanticValueLevel :Proof .
    OPTIONAL {
      { ?claim schema:result ?evidence }
      UNION
      { ?claim schema:about ?evidence }
      UNION
      { ?claim sec:proof ?evidence }
      UNION
      { ?claim oplli:recommendationsReceived ?evidence }
      FILTER(?evidence != ?claim)
    }
  }
}
ORDER BY ?claim""" ;
    rdfs:comment "Tests Tarski's Convention-T-derived proposition from the FAQ (a profile cannot make its own claim true by restating it): every row where ?hasExternalEvidence is false is a claim that calls itself post:Proof-level without actually pointing at a resource other than itself. Run against this graph, every row returns true."@en .

post:queryOplliGap a schema:SoftwareSourceCode ;
    schema:name "Confirm the oplli: vocabulary gap empirically"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:isPartOf post:document ;
    schema:text """PREFIX : <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl#>
PREFIX oplli: <http://www.openlinksw.com/schemas/linkedin#>
PREFIX schema: <http://schema.org/>
PREFIX prov: <http://www.w3.org/ns/prov#>
SELECT ?claim
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl> {
    ?claim a :ProfessionalClaim, oplli:Position ;
           :hasSemanticValueLevel :Proof .
    FILTER NOT EXISTS {
      ?claim ?oplliOutcomeProp ?outcome .
      FILTER(STRSTARTS(STR(?oplliOutcomeProp), STR(oplli:)))
      FILTER(?oplliOutcomeProp NOT IN (oplli:positionSummary, oplli:jobTitle, oplli:company, oplli:companySynopsis, oplli:startDate, oplli:endDate, oplli:title))
    }
  }
}""" ;
    rdfs:comment "Tests the FAQ/glossary claim that oplli: has no property for a Position's measurable outcome. This query looks for any oplli:-namespaced predicate on a Proof-level oplli:Position claim OTHER than oplli:'s known descriptive Position/JobTitle fields. Run against this graph, every Proof-level oplli:Position claim (post:positionA_proof, post:positionC_proof, post:positionD_proof) matches — none of them has an oplli: outcome property, because none exists to have."@en .

post:queryRevisionChain a schema:SoftwareSourceCode ;
    schema:name "Walk a claim's revision chain from Syntax to Proof"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:isPartOf post:document ;
    schema:text """PREFIX : <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl#>
PREFIX oplli: <http://www.openlinksw.com/schemas/linkedin#>
SELECT ?stage0 ?level0 ?stage1 ?level1 ?stage2 ?level2
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/turner-semantic-value-linkedin-proof-examples-claude_sonnet_5-1.ttl> {
    ?stage2 :revisionOf ?stage1 ;
            :hasSemanticValueLevel ?level2 .
    ?stage1 :revisionOf ?stage0 ;
            :hasSemanticValueLevel ?level1 .
    ?stage0 :hasSemanticValueLevel ?level0 .
    FILTER NOT EXISTS { ?stage0 :revisionOf ?anyEarlier }
  }
}""" ;
    rdfs:comment "Tests that post:revisionOf chains are well-formed three-hop paths ending at an unrevised Syntax-level claim. Run against this graph, this returns exactly the Example A chain (positionA_syntax → positionA_meaning → positionA_proof) — Example C's two-stage chain does not match a three-hop pattern, and Examples B/D have no post:revisionOf chain at all, both correctly, since B contrasts two independent claims and D has only one recorded stage."@en .
