@prefix msopaque: <https://ontology.inferal.com/profiles/relay-advertising/microsoftads/opaque-diagnostics/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@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#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix vann: <http://purl.org/vocab/vann/> .
<https://ontology.inferal.com/profiles/relay-advertising/microsoftads/opaque-diagnostics/> a owl:Ontology ; dcterms:title "Microsoft opaque-field diagnostics" ;
    dcterms:description "Evidence-only scope for thirteen undocumented Microsoft payload structures. Retains source-qualified outer contracts and exact observed JSON; typed business interiors remain unresolved." ; dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source <https://relay.inferal.com/ontology/microsoftads/> ; owl:versionInfo "1.0.0" ;
    vann:preferredNamespacePrefix "msopaque" ; vann:preferredNamespaceUri "https://ontology.inferal.com/profiles/relay-advertising/microsoftads/opaque-diagnostics/" .

msopaque:OpaqueFieldContract a rdfs:Class ; rdfs:subClassOf prov:Entity ;
    rdfs:label "opaque outer field contract" ; rdfs:comment "Source-qualified description of a documented native outer property and its unresolved transport/interior boundary; it describes a contract rather than a business payload member." .

msopaque:RawOpaqueObservation a rdfs:Class ; rdfs:subClassOf prov:Entity ;
    rdfs:label "raw opaque field observation" ; rdfs:comment "One present opaque field with exact retained token evidence and explicit native source/capture ownership. It never denotes a modeled estimate dimension or report-filter member." .

msopaque:nativeClass a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range rdfs:Class ;
    rdfs:label "native class" ; rdfs:comment "Authoritative native class owning an opaque outer property; this does not classify any payload interior." .

msopaque:nativeProperty a rdf:Property ; rdfs:domain prov:Entity ; rdfs:range rdf:Property ;
    rdfs:label "native property" ; rdfs:comment "Authoritative outer provider property identified by the vendored native context; it is distinct from uninterpreted JSON member keys." .

msopaque:fieldAlias a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "field alias" ; rdfs:comment "Canonical provider JSON field spelling from the native type-scoped context." .

msopaque:soapType a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "soap type" ; rdfs:comment "Named SOAP type in the pinned authoritative schema; no undocumented members are inferred." .

msopaque:declaredContainer a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "declared container" ; rdfs:comment "Documented outer nullable object or array structure; retained runtime JSON kinds can expose unresolved transport disagreement." .

msopaque:transportStatus a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "transport status" ; rdfs:comment "Explicit unresolved object-or-string representation disagreement in the pinned provider evidence." .

msopaque:interiorStatus a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "interior status" ; rdfs:comment "Documented lack of authoritative member definitions; a retained payload does not close this gap." .

msopaque:sourceEvidence a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range prov:Entity ;
    rdfs:label "source evidence" ; rdfs:comment "IRI identifying the authoritative source document for an outer contract." .

msopaque:sourceEvidenceSha256 a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "source evidence sha256" ; rdfs:comment "SHA256 of the exact pinned authoritative source snapshot used for the outer contract." .

msopaque:contextType a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "context type" ; rdfs:comment "JSON-LD coercion of the native outer property; these contracts use @json." .

msopaque:declaredBusinessMemberCount a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:integer ;
    rdfs:label "declared business member count" ; rdfs:comment "Number of authoritative documented interior business members; zero for every contract in this profile." .

msopaque:capturedWireStatus a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "captured wire status" ; rdfs:comment "Whether delivered client wire evidence is available for the contract; the synthetic package leaves it unavailable." .

msopaque:service a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "service" ; rdfs:comment "Provider service owning the documented outer field." .

msopaque:rawArtifact a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range prov:Entity ;
    rdfs:label "raw artifact" ; rdfs:comment "IRI identifying retained exact UTF8 JSON value-token bytes, including number digits and whitespace." .

msopaque:rawSha256 a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range xsd:string ;
    rdfs:label "raw sha256" ; rdfs:comment "SHA256 of the exact retained UTF8 value-token bytes." .

msopaque:rawJsonLiteral a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range xsd:string ;
    rdfs:label "raw json literal" ; rdfs:comment "Exact original JSON token text as xsd:string; it remains independent of native rdf:JSON numeric canonicalization." .

msopaque:topLevelKind a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range xsd:string ;
    rdfs:label "top level kind" ; rdfs:comment "Observed JSON kind: object, array, string, number, boolean or explicit null. Omitted fields have no observation." .

msopaque:observedAt a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range xsd:dateTimeStamp ;
    rdfs:label "observed at" ; rdfs:comment "Explicit capture instant with its complete timezone and fractional precision, rather than an invented delivery time." .

msopaque:sourceEntity a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range prov:Entity ;
    rdfs:label "source entity" ; rdfs:comment "Native source entity explicitly owned by the supplied capture pack." .

msopaque:accountId a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range xsd:long ;
    rdfs:label "account id" ; rdfs:comment "Exact account identifier supplied as a qualified xsd:long string; no binary floating-point identity conversion occurs." .

msopaque:captureArtifact a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range prov:Entity ;
    rdfs:label "capture artifact" ; rdfs:comment "IRI of the original supplied source capture artifact, retained separately from each raw value artifact." .

msopaque:captureSha256 a rdf:Property ; rdfs:domain msopaque:RawOpaqueObservation ; rdfs:range xsd:string ;
    rdfs:label "capture sha256" ; rdfs:comment "SHA256 of the complete original UTF8 source JSON-LD document." .

msopaque:requiredEvidence a rdf:Property ; rdfs:domain msopaque:OpaqueFieldContract ; rdfs:range xsd:string ;
    rdfs:label "required evidence" ; rdfs:comment "Authoritative member definitions and a resolved transport contract that precede typed business interpretation." .


# Publication metadata agrees with the approved central catalog.
<https://ontology.inferal.com/profiles/relay-advertising/microsoftads/opaque-diagnostics/> a <https://ontology.inferal.com/modules/publication-access/PublicationManagedOntology> .
<https://ontology.inferal.com/profiles/relay-advertising/microsoftads/opaque-diagnostics/> dcterms:accessRights <https://ontology.inferal.com/modules/publication-access/PublicAccess> .
