@prefix op: <https://ontology.inferal.com/mappings/relay-advertising-operation-inputs/> .
@prefix ior: <https://ontology.inferal.com/mappings/relay-operation-input-roles/> .
@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 dct: <http://purl.org/dc/terms/> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix mod: <https://w3id.org/mod#> .
@prefix pub: <https://ontology.inferal.com/modules/publication-access/> .

op: a owl:Ontology, pub:PublicationManagedOntology ;
  dct:title "Advertising Operation Inputs" ;
  dct:description "Operation-scoped Microsoft campaign, Google campaign and campaign-budget and Meta nested input policy under explicit prospective request context." ;
  dct:license <https://creativecommons.org/licenses/by/4.0/> ;
  dct:accessRights pub:PublicAccess ;
  owl:versionInfo "0.2.0" ; mod:status "draft" ;
  vann:preferredNamespacePrefix "op" ;
  vann:preferredNamespaceUri "https://ontology.inferal.com/mappings/relay-advertising-operation-inputs/" ;
  voaf:reliesOn ior:, <https://ontology.inferal.com/modules/advertising-budget/> ;
  rdfs:label "advertising operation inputs" ;
  rdfs:comment "RDF-to-RDF SPARQL projection over lossless native JSON and independently declared context. Input role, policy, requiredness, omission, supplied behavior and execution remain independent. This mapping qualifies policy questions, not complete provider request validity or successful writes." .

op:InputNotPermitted a ior:InputPolicy ;
  rdfs:label "documented input not permitted" ;
  rdfs:comment "The selected operation context forbids supplying this input. This differs from a source marking a returned field readonly and does not establish a provider response or rejection outcome." .
op:OperationControl a ior:InputRole ;
  rdfs:label "operation control input" ;
  rdfs:comment "An input such as an update mask that controls which resource attributes participate in a mutation; it is not an editable resource attribute." .
op:invocation a rdf:Property ; rdfs:domain ior:Slot ; rdfs:range ior:Invocation ;
  rdfs:label "prospective invocation" ;
  rdfs:comment "The retained prospective request owning this contextualized path. Its existence proves neither dispatch nor provider account ownership." .
op:itemIndex a rdf:Property ; rdfs:domain ior:Slot ; rdfs:range xsd:integer ;
  rdfs:label "request item position" ;
  rdfs:comment "The original zero-based ordered item position. Equal native identifiers do not merge separate request items." .
op:nativeDocument a rdf:Property ; rdfs:domain ior:Invocation ; rdfs:range rdfs:Resource ;
  rdfs:label "native JSON document" ;
  rdfs:comment "The root of a lossless generic JSON carrier with exact retained input bytes. JSON context and identifier keys remain opaque data." .
op:declaredContext a rdf:Property ; rdfs:range rdfs:Resource ;
  rdfs:label "caller-declared context" ;
  rdfs:comment "Lossless JSON context asserted by a caller, kept separate from native request bytes and provider observations. Contradictory declarations remain competing candidates." .
op:budgetPeriod a rdf:Property ; rdfs:domain ior:Slot ;
  rdfs:range <https://ontology.inferal.com/modules/advertising-budget/BudgetPeriod> ;
  rdfs:label "qualified budget period" ;
  rdfs:comment "The shared advertising budget period supported for this amount in the selected operation context. A Microsoft DailyBudget amount can represent a lifetime amount for an Audience lifetime budget." .

@prefix operation: <https://ontology.inferal.com/mappings/relay-advertising-operation-inputs/operations/> .
operation:AddCampaigns a ior:Operation ; rdfs:label "Microsoft add campaigns" ;
  rdfs:comment "CampaignManagement v13 creation of ordered Campaign inputs, with assigned identifiers and conditional campaign budget input." .
operation:UpdateCampaigns a ior:Operation ; rdfs:label "Microsoft update campaigns" ;
  rdfs:comment "CampaignManagement v13 update of ordered Campaign targets; target selection is independent of permission to change identity." .
operation:MutateCampaignBudgets a ior:Operation ; rdfs:label "Google mutate campaign budgets" ;
  rdfs:comment "CampaignBudgetService v24 ordered create, masked update or scalar remove operations. This increment does not cover generic mutate or batch-job channels." .
operation:CreateAdSet a ior:Operation ; rdfs:label "Meta create ad set" ;
  rdfs:comment "AdAccount v25 POST adsets creation body with separately qualified targeting and promoted-object input paths." .
operation:CreateAd a ior:Operation ; rdfs:label "Meta create ad" ;
  rdfs:comment "AdAccount v25 POST ads creation body with the required creative parent and documented existing-creative reference representation." .

# Values describe prospective documented effects, independently of execution.
op:ClearsSetting a ior:OmissionPolicy, ior:SuppliedValueBehavior ;
  rdfs:label "documented clearing effect" ;
  rdfs:comment "The represented field-specific input convention requests clearing a setting. The decision axis distinguishes masked omission from supplied input. It does not establish dispatch, write authority or provider success." .
op:PreservesSetting a ior:SuppliedValueBehavior ;
  rdfs:label "supplied input preserves setting" ;
  rdfs:comment "The documented supplied-value convention retains the existing setting; this is separate from omission and from observed provider state." .
op:ReplacesList a ior:SuppliedValueBehavior ;
  rdfs:label "supplied input replaces list" ;
  rdfs:comment "The documented prospective list input replaces the list rather than appending entries. Previously retained entries must be supplied again. No successful write is asserted." .
<https://ontology.inferal.com/mappings/relay-advertising-operation-inputs/operations/MutateCampaigns> a ior:Operation ;
  rdfs:label "Google campaign update operation" ;
  rdfs:comment "The v24 CampaignService mutation surface, bounded here to update inputs and documented target-CPA clearing under explicit applicability context." .
op:sourceContext a rdf:Property ; rdfs:domain ior:Invocation ; rdfs:range rdfs:Resource ;
  rdfs:label "prospective source context envelope" ;
  rdfs:comment "Lossless caller-supplied artifact version, API version and account scope, separate from request bytes and applicability facts. It does not attest native capture or ownership." .
op:sourceSnapshotDigest a rdf:Property ; rdfs:domain ior:Invocation ; rdfs:range xsd:string ;
  rdfs:label "selected policy source snapshot digest" ;
  rdfs:comment "Digest of retained source inventory, curated source statements and exact input/context bytes. It binds diagnostic assessments to one snapshot without granting provenance authority." .
op:graphMember a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ;
  rdfs:label "declared named graph subject" ;
  rdfs:comment "The declarative adapter places all outgoing statements of this subject in the named graph identified by the property subject. Transport copies the declared membership without deciding provider meaning." .

op:customParameterListInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "custom parameter list input" ; rdfs:comment "The nested Parameters list of a Microsoft campaign custom-parameter update, distinct from its outer container." .

op:updateMaskInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "update mask input" ; rdfs:comment "The operation control selecting fields in a native Google mutation; it is not a returned resource attribute." .

op:creativeInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "creative request container" ; rdfs:comment "The Meta creative creation-request container, distinct from a returned Creative resource." .

op:targetingInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "targeting request container" ; rdfs:comment "The Meta targeting creation-request container." .

op:minimumAgeInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "minimum age input" ; rdfs:comment "The documented Meta targeting.age_min request member." .

op:maximumAgeInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "maximum age input" ; rdfs:comment "The Meta targeting.age_max request member whose policy depends on independently declared audience mode." .

op:geographicTargetingInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "geographic targeting input" ; rdfs:comment "The Meta targeting.geo_locations request container." .

op:countryListInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "target country list input" ; rdfs:comment "The documented Meta targeting.geo_locations.countries request list." .

op:promotedObjectInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "promoted object input" ; rdfs:comment "The Meta promoted_object request container with objective-dependent requiredness." .

op:pixelReferenceInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "pixel reference input" ; rdfs:comment "The Meta promoted_object.pixel_id request reference, without edit authority on the pixel identifier." .

op:customEventInput a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "custom event type input" ; rdfs:comment "The documented Meta promoted_object.custom_event_type request member." .

op:unreviewedInputPath a rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource ; rdfs:label "unreviewed request path" ; rdfs:comment "A diagnostic selector for a retained path with no reviewed semantic-field correspondence. It cannot match a source assessment." .
