# SHACL Shapes generated by @inferal-relay/rdf-emitter

@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tsps: <https://relay.inferal.com/ontology/typespec/shapes/> .
@prefix relay: <https://relay.inferal.com/ontology#> .
@prefix tspv: <https://relay.inferal.com/ontology/typespec/versioning/> .
@prefix adm: <https://ontology.inferal.com/modules/advertising-measurement/> .
@prefix aent: <https://ontology.inferal.com/modules/advertising-entity/> .
@prefix googleads: <https://relay.inferal.com/ontology/googleads/> .
@prefix schema: <https://schema.org/> .

# Class hierarchy
googleads:Ad rdfs:subClassOf schema:CreativeWork .
googleads:AdGroup rdfs:subClassOf aent:TargetingGroup .
googleads:AdGroupAd rdfs:subClassOf aent:Ad .
googleads:Campaign rdfs:subClassOf aent:Campaign .
googleads:CampaignBudget rdfs:subClassOf schema:Thing .
googleads:Customer rdfs:subClassOf aent:AdAccount .

relay:WriteLifecycle a rdfs:Class ;
  rdfs:label "Write lifecycle" ;
  rdfs:comment "Provider operations that accept a property; absence means not classified." .

relay:writeLifecycle a rdf:Property ;
  rdfs:label "write lifecycle" ;
  rdfs:domain sh:PropertyShape ;
  rdfs:range relay:WriteLifecycle .

relay:Writable a relay:WriteLifecycle ;
  rdfs:label "Writable" ;
  rdfs:comment "Accepted during create and update operations." .

relay:CreateOnly a relay:WriteLifecycle ;
  rdfs:label "Create only" ;
  rdfs:comment "Accepted during create and rejected during update." .

relay:ReadOnly a relay:WriteLifecycle ;
  rdfs:label "Read only" ;
  rdfs:comment "Returned by the provider and rejected during create and update." .

<https://relay.inferal.com/ontology/googleads/shapes> a tsps:ShapeGeneration ;
  tsps:shapeReferenceChainLimit 5 ;
  tsps:omittedShapeReferenceCount 28
  ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:AppAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:AppEngagementAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:AppPreRegistrationAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:AssetShape ;
    tsps:referenceTo googleads:AssetFieldTypePolicySummaryShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:ChangeEventChangedResourceShape ;
    tsps:referenceTo googleads:AdGroupAdShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:ChangeEventChangedResourceShape ;
    tsps:referenceTo googleads:AssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:ChangeEventShape ;
    tsps:referenceTo googleads:ChangeEventChangedResourceShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:DemandGenCarouselAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:DemandGenMultiAssetAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:DemandGenProductAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:DemandGenVideoResponsiveAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:GoogleAdsRowShape ;
    tsps:referenceTo googleads:AdGroupAdAssetViewShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:GoogleAdsRowShape ;
    tsps:referenceTo googleads:AdGroupAdShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:GoogleAdsRowShape ;
    tsps:referenceTo googleads:AssetGroupAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:GoogleAdsRowShape ;
    tsps:referenceTo googleads:AssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:GoogleAdsRowShape ;
    tsps:referenceTo googleads:RecommendationShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:LocalAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:RecommendationCalloutAssetRecommendationShape ;
    tsps:referenceTo googleads:AssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:RecommendationShape ;
    tsps:referenceTo googleads:RecommendationResponsiveSearchAdAssetRecommendationShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:RecommendationShape ;
    tsps:referenceTo googleads:RecommendationResponsiveSearchAdImproveAdStrengthRecommendationShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:RecommendationShape ;
    tsps:referenceTo googleads:RecommendationResponsiveSearchAdRecommendationShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:RecommendationShape ;
    tsps:referenceTo googleads:RecommendationTextAdRecommendationShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:RecommendationSitelinkAssetRecommendationShape ;
    tsps:referenceTo googleads:AssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:ResponsiveDisplayAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:ResponsiveSearchAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:RuleBasedUserListInfoShape ;
    tsps:referenceTo googleads:FlexibleRuleUserListInfoShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:SmartCampaignAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom googleads:VideoResponsiveAdInfoShape ;
    tsps:referenceTo googleads:AdTextAssetShape ;
    tsps:omittedBecause "over-long"
  ] .

# Shape for Accessible Bidding Strategy
googleads:AccessibleBiddingStrategyShape a sh:NodeShape ;
  sh:targetClass googleads:AccessibleBiddingStrategy ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/maximizeConversions> ;
    sh:name "maximize conversions" ;
    sh:description "Output only. An automated bidding strategy to help get the most conversions for your campaigns while spending your budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AccessibleBiddingStrategyMaximizeConversionsShape ;
    sh:class googleads:AccessibleBiddingStrategyMaximizeConversions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/ownerDescriptiveName> ;
    sh:name "owner descriptive name" ;
    sh:description "Output only. descriptive_name of the Customer which owns the bidding strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/ownerCustomerId> ;
    sh:name "owner customer id" ;
    sh:description "Output only. The ID of the Customer which owns the bidding strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/name> ;
    sh:name "name" ;
    sh:description "Output only. The name of the bidding strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/targetRoas> ;
    sh:name "target roas" ;
    sh:description "Output only. A bidding strategy that helps you maximize revenue while averaging a specific target Return On Ad Spend (ROAS)." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AccessibleBiddingStrategyTargetRoasShape ;
    sh:class googleads:AccessibleBiddingStrategyTargetRoas ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/maximizeConversionValue> ;
    sh:name "maximize conversion value" ;
    sh:description "Output only. An automated bidding strategy to help get the most conversion value for your campaigns while spending your budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AccessibleBiddingStrategyMaximizeConversionValueShape ;
    sh:class googleads:AccessibleBiddingStrategyMaximizeConversionValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the bidding strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "COMMISSION" "ENHANCED_CPC" "FIXED_CPM" "FIXED_SHARE_OF_VOICE" "INVALID" "MANUAL_CPA" "MANUAL_CPC" "MANUAL_CPM" "MANUAL_CPV" "MAXIMIZE_CONVERSIONS" "MAXIMIZE_CONVERSION_VALUE" "PAGE_ONE_PROMOTED" "PERCENT_CPC" "TARGET_CPA" "TARGET_CPC" "TARGET_CPM" "TARGET_CPV" "TARGET_IMPRESSION_SHARE" "TARGET_OUTRANK_SHARE" "TARGET_ROAS" "TARGET_SPEND" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/targetImpressionShare> ;
    sh:name "target impression share" ;
    sh:description "Output only. A bidding strategy that automatically optimizes towards a chosen percentage of impressions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AccessibleBiddingStrategyTargetImpressionShareShape ;
    sh:class googleads:AccessibleBiddingStrategyTargetImpressionShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/targetSpend> ;
    sh:name "target spend" ;
    sh:description "Output only. A bid strategy that sets your bids to help get as many clicks as possible within your budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AccessibleBiddingStrategyTargetSpendShape ;
    sh:class googleads:AccessibleBiddingStrategyTargetSpend ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the accessible bidding strategy. AccessibleBiddingStrategy resource names have the form: `customers/{customer_id}/accessibleBiddingStrategies/{bidding_strategy_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/targetCpa> ;
    sh:name "target cpa" ;
    sh:description "Output only. A bidding strategy that sets bids to help get as many conversions as possible at the target cost-per-acquisition (CPA) you set." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AccessibleBiddingStrategyTargetCpaShape ;
    sh:class googleads:AccessibleBiddingStrategyTargetCpa ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategy/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the bidding strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Accessible Bidding Strategy Maximize Conversions
googleads:AccessibleBiddingStrategyMaximizeConversionsShape a sh:NodeShape ;
  sh:targetClass googleads:AccessibleBiddingStrategyMaximizeConversions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyMaximizeConversions/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "Output only. The target cost per acquisition (CPA) option. This is the average amount that you would like to spend per acquisition." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Accessible Bidding Strategy Target Roas
googleads:AccessibleBiddingStrategyTargetRoasShape a sh:NodeShape ;
  sh:targetClass googleads:AccessibleBiddingStrategyTargetRoas ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyTargetRoas/targetRoas> ;
    sh:name "target roas" ;
    sh:description "Output only. The chosen revenue (based on conversion data) per unit of spend." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Accessible Bidding Strategy Maximize Conversion Value
googleads:AccessibleBiddingStrategyMaximizeConversionValueShape a sh:NodeShape ;
  sh:targetClass googleads:AccessibleBiddingStrategyMaximizeConversionValue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyMaximizeConversionValue/targetRoas> ;
    sh:name "target roas" ;
    sh:description "Output only. The target return on ad spend (ROAS) option. If set, the bid strategy will maximize revenue while averaging the target return on ad spend. If the target ROAS is high, the bid strategy may not be able to spend the full budget. If the target ROAS is not set, the bid strategy will aim to achieve the highest possible ROAS for the budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Accessible Bidding Strategy Target Impression Share
googleads:AccessibleBiddingStrategyTargetImpressionShareShape a sh:NodeShape ;
  sh:targetClass googleads:AccessibleBiddingStrategyTargetImpressionShare ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyTargetImpressionShare/locationFractionMicros> ;
    sh:name "location fraction micros" ;
    sh:description "The chosen fraction of ads to be shown in the targeted location in micros. For example, 1% equals 10,000." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyTargetImpressionShare/location> ;
    sh:name "location" ;
    sh:description "Output only. The targeted location on the search results page." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ANYWHERE_ON_PAGE" "TOP_OF_PAGE" "ABSOLUTE_TOP_OF_PAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyTargetImpressionShare/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Output only. The highest CPC bid the automated bidding system is permitted to specify. This is a required field entered by the advertiser that sets the ceiling and specified in local micros." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Accessible Bidding Strategy Target Spend
googleads:AccessibleBiddingStrategyTargetSpendShape a sh:NodeShape ;
  sh:targetClass googleads:AccessibleBiddingStrategyTargetSpend ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyTargetSpend/targetSpendMicros> ;
    sh:name "target spend micros" ;
    sh:description "Output only. The spend target under which to maximize clicks. A TargetSpend bidder will attempt to spend the smaller of this value or the natural throttling spend amount. If not specified, the budget is used as the spend target. This field is deprecated and should no longer be used. See https://ads-developers.googleblog.com/2020/05/reminder-about-sunset-creation-of.html for details." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyTargetSpend/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Output only. Maximum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Accessible Bidding Strategy Target Cpa
googleads:AccessibleBiddingStrategyTargetCpaShape a sh:NodeShape ;
  sh:targetClass googleads:AccessibleBiddingStrategyTargetCpa ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccessibleBiddingStrategyTargetCpa/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "Output only. Average CPA target. This target should be greater than or equal to minimum billable unit based on the currency for the account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Account Budget
googleads:AccountBudgetShape a sh:NodeShape ;
  sh:targetClass googleads:AccountBudget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/proposedEndDateTime> ;
    sh:name "proposed end date time" ;
    sh:description "Output only. The proposed end time in yyyy-MM-dd HH:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/approvedStartDateTime> ;
    sh:name "approved start date time" ;
    sh:description "Output only. The approved start time of the account-level budget in yyyy-MM-dd HH:mm:ss format. For example, if a new budget is approved after the proposed start time, the approved start time is the time of approval." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/adjustedSpendingLimitMicros> ;
    sh:name "adjusted spending limit micros" ;
    sh:description "Output only. The adjusted spending limit in micros. One million is equivalent to one unit. If the approved spending limit is finite, the adjusted spending limit may vary depending on the types of adjustments applied to this budget, if applicable. The different kinds of adjustments are described here: https://support.google.com/google-ads/answer/1704323 For example, a debit adjustment reduces how much the account is allowed to spend." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/adjustedSpendingLimitType> ;
    sh:name "adjusted spending limit type" ;
    sh:description "Output only. The adjusted spending limit as a well-defined type, for example, INFINITE. This will only be populated if the adjusted spending limit is INFINITE, which is guaranteed to be true if the approved spending limit is INFINITE." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INFINITE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the account-level budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of this account-level budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "APPROVED" "CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/approvedEndDateTime> ;
    sh:name "approved end date time" ;
    sh:description "Output only. The approved end time in yyyy-MM-dd HH:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/amountServedMicros> ;
    sh:name "amount served micros" ;
    sh:description "Output only. The value of Ads that have been served, in micros. This includes overdelivery costs, in which case a credit might be automatically applied to the budget (see total_adjustments_micros)." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/pendingProposal> ;
    sh:name "pending proposal" ;
    sh:description "Output only. The pending proposal to modify this budget, if applicable." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AccountBudgetPendingAccountBudgetProposalShape ;
    sh:class googleads:AccountBudgetPendingAccountBudgetProposal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/proposedSpendingLimitMicros> ;
    sh:name "proposed spending limit micros" ;
    sh:description "Output only. The proposed spending limit in micros. One million is equivalent to one unit." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/proposedStartDateTime> ;
    sh:name "proposed start date time" ;
    sh:description "Output only. The proposed start time of the account-level budget in yyyy-MM-dd HH:mm:ss format. If a start time type of NOW was proposed, this is the time of request." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/name> ;
    sh:name "name" ;
    sh:description "Output only. The name of the account-level budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/proposedSpendingLimitType> ;
    sh:name "proposed spending limit type" ;
    sh:description "Output only. The proposed spending limit as a well-defined type, for example, INFINITE." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INFINITE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the account-level budget. AccountBudget resource names have the form: `customers/{customer_id}/accountBudgets/{account_budget_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/notes> ;
    sh:name "notes" ;
    sh:description "Output only. Notes associated with the budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/approvedEndTimeType> ;
    sh:name "approved end time type" ;
    sh:description "Output only. The approved end time as a well-defined type, for example, FOREVER." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/totalAdjustmentsMicros> ;
    sh:name "total adjustments micros" ;
    sh:description "Output only. The total adjustments amount. An example of an adjustment is courtesy credits." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/approvedSpendingLimitMicros> ;
    sh:name "approved spending limit micros" ;
    sh:description "Output only. The approved spending limit in micros. One million is equivalent to one unit. This will only be populated if the proposed spending limit is finite, and will always be greater than or equal to the proposed spending limit." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/billingSetup> ;
    sh:name "billing setup" ;
    sh:description "Output only. The resource name of the billing setup associated with this account-level budget. BillingSetup resource names have the form: `customers/{customer_id}/billingSetups/{billing_setup_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/purchaseOrderNumber> ;
    sh:name "purchase order number" ;
    sh:description "Output only. A purchase order number is a value that helps users reference this budget in their monthly invoices." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/approvedSpendingLimitType> ;
    sh:name "approved spending limit type" ;
    sh:description "Output only. The approved spending limit as a well-defined type, for example, INFINITE. This will only be populated if the approved spending limit is INFINITE." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INFINITE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudget/proposedEndTimeType> ;
    sh:name "proposed end time type" ;
    sh:description "Output only. The proposed end time as a well-defined type, for example, FOREVER." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] .

# Shape for Account Budget Pending Account Budget Proposal
googleads:AccountBudgetPendingAccountBudgetProposalShape a sh:NodeShape ;
  sh:targetClass googleads:AccountBudgetPendingAccountBudgetProposal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/spendingLimitType> ;
    sh:name "spending limit type" ;
    sh:description "Output only. The spending limit as a well-defined type, for example, INFINITE." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INFINITE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/purchaseOrderNumber> ;
    sh:name "purchase order number" ;
    sh:description "Output only. A purchase order number is a value that helps users reference this budget in their monthly invoices." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/proposalType> ;
    sh:name "proposal type" ;
    sh:description "Output only. The type of this proposal, for example, END to end the budget associated with this proposal." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CREATE" "UPDATE" "END" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. The time when this account-level budget proposal was created. Formatted as yyyy-MM-dd HH:mm:ss." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/name> ;
    sh:name "name" ;
    sh:description "Output only. The name to assign to the account-level budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/startDateTime> ;
    sh:name "start date time" ;
    sh:description "Output only. The start time in yyyy-MM-dd HH:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/notes> ;
    sh:name "notes" ;
    sh:description "Output only. Notes associated with this budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/endDateTime> ;
    sh:name "end date time" ;
    sh:description "Output only. The end time in yyyy-MM-dd HH:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/accountBudgetProposal> ;
    sh:name "account budget proposal" ;
    sh:description "Output only. The resource name of the proposal. AccountBudgetProposal resource names have the form: `customers/{customer_id}/accountBudgetProposals/{account_budget_proposal_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/endTimeType> ;
    sh:name "end time type" ;
    sh:description "Output only. The end time as a well-defined type, for example, FOREVER." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetPendingAccountBudgetProposal/spendingLimitMicros> ;
    sh:name "spending limit micros" ;
    sh:description "Output only. The spending limit in micros. One million is equivalent to one unit." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Account Budget Proposal
googleads:AccountBudgetProposalShape a sh:NodeShape ;
  sh:targetClass googleads:AccountBudgetProposal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedName> ;
    sh:name "proposed name" ;
    sh:description "Immutable. The name to assign to the account-level budget." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedEndTimeType> ;
    sh:name "proposed end time type" ;
    sh:description "Immutable. The proposed end date time as a well-defined type, for example, FOREVER." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedStartTimeType> ;
    sh:name "proposed start time type" ;
    sh:description "Immutable. The proposed start date time as a well-defined type, for example, NOW." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/billingSetup> ;
    sh:name "billing setup" ;
    sh:description "Immutable. The resource name of the billing setup associated with this proposal." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/approvedSpendingLimitType> ;
    sh:name "approved spending limit type" ;
    sh:description "Output only. The approved spending limit as a well-defined type, for example, INFINITE." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INFINITE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/accountBudget> ;
    sh:name "account budget" ;
    sh:description "Immutable. The resource name of the account-level budget associated with this proposal." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/approvedSpendingLimitMicros> ;
    sh:name "approved spending limit micros" ;
    sh:description "Output only. The approved spending limit in micros. One million is equivalent to one unit." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedNotes> ;
    sh:name "proposed notes" ;
    sh:description "Immutable. Notes associated with this budget." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedSpendingLimitType> ;
    sh:name "proposed spending limit type" ;
    sh:description "Immutable. The proposed spending limit as a well-defined type, for example, INFINITE." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INFINITE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the proposal. AccountBudgetProposal resource names have the form: `customers/{customer_id}/accountBudgetProposals/{account_budget_proposal_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/approvedEndTimeType> ;
    sh:name "approved end time type" ;
    sh:description "Output only. The approved end date time as a well-defined type, for example, FOREVER." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposalType> ;
    sh:name "proposal type" ;
    sh:description "Immutable. The type of this proposal, for example, END to end the budget associated with this proposal." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CREATE" "UPDATE" "END" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedPurchaseOrderNumber> ;
    sh:name "proposed purchase order number" ;
    sh:description "Immutable. A purchase order number is a value that enables the user to help them reference this budget in their monthly invoices." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. The date time when this account-level budget proposal was created, which is not the same as its approval date time, if applicable." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedSpendingLimitMicros> ;
    sh:name "proposed spending limit micros" ;
    sh:description "Immutable. The proposed spending limit in micros. One million is equivalent to one unit." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedStartDateTime> ;
    sh:name "proposed start date time" ;
    sh:description "Immutable. The proposed start date time in yyyy-mm-dd hh:mm:ss format." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/approvedEndDateTime> ;
    sh:name "approved end date time" ;
    sh:description "Output only. The approved end date time in yyyy-mm-dd hh:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/approvedStartDateTime> ;
    sh:name "approved start date time" ;
    sh:description "Output only. The approved start date time in yyyy-mm-dd hh:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the proposal." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of this proposal. When a new proposal is created, the status defaults to PENDING." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "APPROVED_HELD" "APPROVED" "CANCELLED" "REJECTED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/approvalDateTime> ;
    sh:name "approval date time" ;
    sh:description "Output only. The date time when this account-level budget was approved, if applicable." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountBudgetProposal/proposedEndDateTime> ;
    sh:name "proposed end date time" ;
    sh:description "Immutable. The proposed end date time in yyyy-mm-dd hh:mm:ss format." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Account Link
googleads:AccountLinkShape a sh:NodeShape ;
  sh:targetClass googleads:AccountLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountLink/status> ;
    sh:name "status" ;
    sh:description "The status of the link." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "REQUESTED" "PENDING_APPROVAL" "REJECTED" "REVOKED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountLink/thirdPartyAppAnalytics> ;
    sh:name "third party app analytics" ;
    sh:description "Immutable. A third party app analytics link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ThirdPartyAppAnalyticsLinkIdentifierShape ;
    sh:class googleads:ThirdPartyAppAnalyticsLinkIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountLink/accountLinkId> ;
    sh:name "account link id" ;
    sh:description "Output only. The ID of the link. This field is read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountLink/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the linked account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "THIRD_PARTY_APP_ANALYTICS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AccountLink/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Resource name of the account link. AccountLink resource names have the form: `customers/{customer_id}/accountLinks/{account_link_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Third Party App Analytics Link Identifier
googleads:ThirdPartyAppAnalyticsLinkIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:ThirdPartyAppAnalyticsLinkIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ThirdPartyAppAnalyticsLinkIdentifier/appAnalyticsProviderId> ;
    sh:name "app analytics provider id" ;
    sh:description "Immutable. The ID of the app analytics provider. This field should not be empty when creating a new third party app analytics link. It is unable to be modified after the creation of the link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ThirdPartyAppAnalyticsLinkIdentifier/appId> ;
    sh:name "app id" ;
    sh:description "Immutable. A string that uniquely identifies a mobile application from which the data was collected to the Google Ads API. For iOS, the ID string is the 9 digit string that appears at the end of an App Store URL (for example, \"422689480\" for \"Gmail\" whose App Store link is https://apps.apple.com/us/app/gmail-email-by-google/id422689480). For Android, the ID string is the application's package name (for example, \"com.google.android.gm\" for \"Gmail\" given Google Play link https://play.google.com/store/apps/details?id=com.google.android.gm) This field should not be empty when creating a new third party app analytics link. It is unable to be modified after the creation of the link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ThirdPartyAppAnalyticsLinkIdentifier/appVendor> ;
    sh:name "app vendor" ;
    sh:description "Immutable. The vendor of the app. This field should not be empty when creating a new third party app analytics link. It is unable to be modified after the creation of the link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPLE_APP_STORE" "GOOGLE_APP_STORE" ) ;
  ] .

# Shape for Activity City Info
googleads:ActivityCityInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ActivityCityInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ActivityCityInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the activity city. The Geo Target Constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Activity Country Info
googleads:ActivityCountryInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ActivityCountryInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ActivityCountryInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the activity country. The Geo Target Constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Activity Id Info
googleads:ActivityIdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ActivityIdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ActivityIdInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the activity ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Activity Rating Info
googleads:ActivityRatingInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ActivityRatingInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ActivityRatingInfo/value> ;
    sh:name "value" ;
    sh:description "Long value of the activity rating." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Activity State Info
googleads:ActivityStateInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ActivityStateInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ActivityStateInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the activity state. The Geo Target Constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad
googleads:AdShape a sh:NodeShape ;
  sh:targetClass googleads:Ad ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/addedByGoogleAds> ;
    sh:name "added by google ads" ;
    sh:description "Output only. Indicates if this ad was automatically added by Google Ads and not by a user. For example, this could happen when ads are automatically created as suggestions for new ads based on knowledge of how existing ads are performing." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/demandGenVideoResponsiveAd> ;
    sh:name "demand gen video responsive ad" ;
    sh:description "Details pertaining to a Demand Gen video responsive ad." ;
    sh:node googleads:DemandGenVideoResponsiveAdInfoShape ;
    sh:class googleads:DemandGenVideoResponsiveAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/displayUploadAd> ;
    sh:name "display upload ad" ;
    sh:description "Details pertaining to a display upload ad." ;
    sh:node googleads:DisplayUploadAdInfoShape ;
    sh:class googleads:DisplayUploadAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "The list of mappings that can be used to substitute custom parameter tags in a `tracking_url_template`, `final_urls`, or `mobile_final_urls`. For mutates, use url custom parameter operations." ;
    sh:node googleads:CustomParameterShape ;
    sh:class googleads:CustomParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/displayUrl> ;
    sh:name "display url" ;
    sh:description "The URL that appears in the ad description for some ad formats." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/devicePreference> ;
    sh:name "device preference" ;
    sh:description "The device preference for the ad. You can only specify a preference for mobile devices. When this preference is set the ad will be preferred over other ads when being displayed on a mobile device. The ad can still be displayed on other device types, for example, if no other ads are available. If unspecified (no device preference), all devices are targeted. This is only supported by some ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MOBILE" "TABLET" "DESKTOP" "CONNECTED_TV" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/imageAd> ;
    sh:name "image ad" ;
    sh:description "Immutable. Details pertaining to an Image ad." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ImageAdInfoShape ;
    sh:class googleads:ImageAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/systemManagedResourceSource> ;
    sh:name "system managed resource source" ;
    sh:description "Output only. If this ad is system managed, then this field will indicate the source. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AD_VARIATIONS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad. Ad resource names have the form: `customers/{customer_id}/ads/{ad_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/demandGenCarouselAd> ;
    sh:name "demand gen carousel ad" ;
    sh:description "Details pertaining to a Demand Gen carousel ad." ;
    sh:node googleads:DemandGenCarouselAdInfoShape ;
    sh:class googleads:DemandGenCarouselAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/videoAd> ;
    sh:name "video ad" ;
    sh:description "Details pertaining to a Video ad." ;
    sh:node googleads:VideoAdInfoShape ;
    sh:class googleads:VideoAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/shoppingSmartAd> ;
    sh:name "shopping smart ad" ;
    sh:description "Details pertaining to a Smart Shopping ad." ;
    sh:node googleads:ShoppingSmartAdInfoShape ;
    sh:class googleads:ShoppingSmartAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/shoppingComparisonListingAd> ;
    sh:name "shopping comparison listing ad" ;
    sh:description "Details pertaining to a Shopping Comparison Listing ad." ;
    sh:node googleads:ShoppingComparisonListingAdInfoShape ;
    sh:class googleads:ShoppingComparisonListingAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/smartCampaignAd> ;
    sh:name "smart campaign ad" ;
    sh:description "Details pertaining to a Smart campaign ad." ;
    sh:node googleads:SmartCampaignAdInfoShape ;
    sh:class googleads:SmartCampaignAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/appEngagementAd> ;
    sh:name "app engagement ad" ;
    sh:description "Details pertaining to an app engagement ad." ;
    sh:node googleads:AppEngagementAdInfoShape ;
    sh:class googleads:AppEngagementAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/demandGenMultiAssetAd> ;
    sh:name "demand gen multi asset ad" ;
    sh:description "Details pertaining to a Demand Gen multi asset ad." ;
    sh:node googleads:DemandGenMultiAssetAdInfoShape ;
    sh:class googleads:DemandGenMultiAssetAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/legacyAppInstallAd> ;
    sh:name "legacy app install ad" ;
    sh:description "Immutable. Details pertaining to a legacy app install ad." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LegacyAppInstallAdInfoShape ;
    sh:class googleads:LegacyAppInstallAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/name> ;
    sh:name "name" ;
    sh:description "Immutable. The name of the ad. This is only used to be able to identify the ad. It does not need to be unique and does not affect the served ad. The name field is currently only supported for DisplayUploadAd, ImageAd, LegacyAppInstallAd, ShoppingComparisonListingAd, VideoAd, VideoResponsiveAd and DemandGen ads." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/responsiveSearchAd> ;
    sh:name "responsive search ad" ;
    sh:description "Details pertaining to a responsive search ad." ;
    sh:node googleads:ResponsiveSearchAdInfoShape ;
    sh:class googleads:ResponsiveSearchAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TEXT_AD" "EXPANDED_TEXT_AD" "EXPANDED_DYNAMIC_SEARCH_AD" "HOTEL_AD" "SHOPPING_SMART_AD" "SHOPPING_PRODUCT_AD" "VIDEO_AD" "IMAGE_AD" "RESPONSIVE_SEARCH_AD" "LEGACY_RESPONSIVE_DISPLAY_AD" "APP_AD" "LEGACY_APP_INSTALL_AD" "RESPONSIVE_DISPLAY_AD" "LOCAL_AD" "HTML5_UPLOAD_AD" "DYNAMIC_HTML5_AD" "APP_ENGAGEMENT_AD" "SHOPPING_COMPARISON_LISTING_AD" "VIDEO_BUMPER_AD" "VIDEO_NON_SKIPPABLE_IN_STREAM_AD" "VIDEO_TRUEVIEW_IN_STREAM_AD" "VIDEO_RESPONSIVE_AD" "SMART_CAMPAIGN_AD" "CALL_AD" "APP_PRE_REGISTRATION_AD" "IN_FEED_VIDEO_AD" "DEMAND_GEN_MULTI_ASSET_AD" "DEMAND_GEN_CAROUSEL_AD" "TRAVEL_AD" "DEMAND_GEN_VIDEO_RESPONSIVE_AD" "DEMAND_GEN_PRODUCT_AD" "YOUTUBE_AUDIO_AD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/hotelAd> ;
    sh:name "hotel ad" ;
    sh:description "Details pertaining to a hotel ad." ;
    sh:node googleads:HotelAdInfoShape ;
    sh:class googleads:HotelAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/demandGenProductAd> ;
    sh:name "demand gen product ad" ;
    sh:description "Details pertaining to a Demand Gen product ad." ;
    sh:node googleads:DemandGenProductAdInfoShape ;
    sh:class googleads:DemandGenProductAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/syntheticContentInfo> ;
    sh:name "synthetic content info" ;
    sh:description "Synthetic content info for the ad." ;
    sh:node googleads:SyntheticContentInfoShape ;
    sh:class googleads:SyntheticContentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/videoResponsiveAd> ;
    sh:name "video responsive ad" ;
    sh:description "Details pertaining to a Video responsive ad." ;
    sh:node googleads:VideoResponsiveAdInfoShape ;
    sh:class googleads:VideoResponsiveAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/urlCollections> ;
    sh:name "url collections" ;
    sh:description "Additional URLs for the ad that are tagged with a unique identifier that can be referenced from other fields in the ad." ;
    sh:node googleads:UrlCollectionShape ;
    sh:class googleads:UrlCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/appPreRegistrationAd> ;
    sh:name "app pre registration ad" ;
    sh:description "Details pertaining to an app pre-registration ad." ;
    sh:node googleads:AppPreRegistrationAdInfoShape ;
    sh:class googleads:AppPreRegistrationAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The URL template for constructing a tracking URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/legacyResponsiveDisplayAd> ;
    sh:name "legacy responsive display ad" ;
    sh:description "Details pertaining to a legacy responsive display ad." ;
    sh:node googleads:LegacyResponsiveDisplayAdInfoShape ;
    sh:class googleads:LegacyResponsiveDisplayAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/appAd> ;
    sh:name "app ad" ;
    sh:description "Details pertaining to an app ad." ;
    sh:node googleads:AppAdInfoShape ;
    sh:class googleads:AppAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/travelAd> ;
    sh:name "travel ad" ;
    sh:description "Details pertaining to a travel ad." ;
    sh:node googleads:TravelAdInfoShape ;
    sh:class googleads:TravelAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/expandedDynamicSearchAd> ;
    sh:name "expanded dynamic search ad" ;
    sh:description "Immutable. Details pertaining to an Expanded Dynamic Search Ad. This type of ad has its headline, final URLs, and display URL auto-generated at serving time according to domain name specific information provided by `dynamic_search_ads_setting` linked at the campaign level." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ExpandedDynamicSearchAdInfoShape ;
    sh:class googleads:ExpandedDynamicSearchAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "A list of final app URLs that will be used on mobile if the user has the specific app installed." ;
    sh:node googleads:FinalAppUrlShape ;
    sh:class googleads:FinalAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The suffix to use when constructing a final URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/textAd> ;
    sh:name "text ad" ;
    sh:description "Immutable. Details pertaining to a text ad." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:TextAdInfoShape ;
    sh:class googleads:TextAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The list of possible final URLs after all cross-domain redirects for the ad." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/localAd> ;
    sh:name "local ad" ;
    sh:description "Details pertaining to a local ad." ;
    sh:node googleads:LocalAdInfoShape ;
    sh:class googleads:LocalAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/expandedTextAd> ;
    sh:name "expanded text ad" ;
    sh:description "Details pertaining to an expanded text ad. Expanded text ads are deprecated. Use `ResponsiveSearchAd` instead." ;
    sh:node googleads:ExpandedTextAdInfoShape ;
    sh:class googleads:ExpandedTextAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The list of possible final mobile URLs after all cross-domain redirects for the ad." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/shoppingProductAd> ;
    sh:name "shopping product ad" ;
    sh:description "Details pertaining to a Shopping product ad." ;
    sh:node googleads:ShoppingProductAdInfoShape ;
    sh:class googleads:ShoppingProductAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Ad/responsiveDisplayAd> ;
    sh:name "responsive display ad" ;
    sh:description "Details pertaining to a responsive display ad." ;
    sh:node googleads:ResponsiveDisplayAdInfoShape ;
    sh:class googleads:ResponsiveDisplayAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Demand Gen Video Responsive Ad Info
googleads:DemandGenVideoResponsiveAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:DemandGenVideoResponsiveAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets used for the short headline." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/videos> ;
    sh:name "videos" ;
    sh:description "Required. List of YouTube video assets used for the ad." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/longHeadlines> ;
    sh:name "long headlines" ;
    sh:description "List of text assets used for the long headline." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/companionBanners> ;
    sh:name "companion banners" ;
    sh:description "List of image assets used for the companion banner. Currently, only a single value for the companion banner asset is supported." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/breadcrumb2> ;
    sh:name "breadcrumb2" ;
    sh:description "Second part of text that appears in the ad with the displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets used for the description." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/callToActions> ;
    sh:name "call to actions" ;
    sh:description "Assets of type CallToActionAsset used for the \"Call To Action\" button." ;
    sh:node googleads:AdCallToActionAssetShape ;
    sh:class googleads:AdCallToActionAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/breadcrumb1> ;
    sh:name "breadcrumb1" ;
    sh:description "First part of text that appears in the ad with the displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/businessName> ;
    sh:name "business name" ;
    sh:description "Required. The advertiser/brand name." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenVideoResponsiveAdInfo/logoImages> ;
    sh:name "logo images" ;
    sh:description "Required. Logo image to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%)." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Text Asset
googleads:AdTextAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdTextAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdTextAsset/policySummaryInfo> ;
    sh:name "policy summary info" ;
    sh:description "The policy summary of this text asset." ;
    sh:node googleads:AdAssetPolicySummaryShape ;
    sh:class googleads:AdAssetPolicySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdTextAsset/text> ;
    sh:name "text" ;
    sh:description "Asset text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdTextAsset/pinnedField> ;
    sh:name "pinned field" ;
    sh:description "The pinned field of the asset. This restricts the asset to only serve within this field. Multiple assets can be pinned to the same field. An asset that is unpinned or pinned to a different field will not serve in a field where some other asset has been pinned." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE_1" "HEADLINE_2" "HEADLINE_3" "DESCRIPTION_1" "DESCRIPTION_2" "HEADLINE" "HEADLINE_IN_PORTRAIT" "LONG_HEADLINE" "DESCRIPTION" "DESCRIPTION_IN_PORTRAIT" "BUSINESS_NAME_IN_PORTRAIT" "BUSINESS_NAME" "MARKETING_IMAGE" "MARKETING_IMAGE_IN_PORTRAIT" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "CALL_TO_ACTION" "YOU_TUBE_VIDEO" "SITELINK" "CALL" "MOBILE_APP" "CALLOUT" "STRUCTURED_SNIPPET" "PRICE" "PROMOTION" "AD_IMAGE" "LEAD_FORM" "BUSINESS_LOGO" "DESCRIPTION_PREFIX" "HEADLINE_AS_SITELINK_POSITION_ONE" "HEADLINE_AS_SITELINK_POSITION_TWO" "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_ONE" "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_TWO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdTextAsset/assetPerformanceLabel> ;
    sh:name "asset performance label" ;
    sh:description "The performance label of this text asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "LEARNING" "LOW" "GOOD" "BEST" "NOT_APPLICABLE" ) ;
  ] .

# Shape for Ad Asset Policy Summary
googleads:AdAssetPolicySummaryShape a sh:NodeShape ;
  sh:targetClass googleads:AdAssetPolicySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdAssetPolicySummary/policyTopicEntries> ;
    sh:name "policy topic entries" ;
    sh:description "The list of policy findings for this asset." ;
    sh:node googleads:PolicyTopicEntryShape ;
    sh:class googleads:PolicyTopicEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdAssetPolicySummary/reviewStatus> ;
    sh:name "review status" ;
    sh:description "Where in the review process this asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REVIEW_IN_PROGRESS" "REVIEWED" "UNDER_APPEAL" "ELIGIBLE_MAY_SERVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdAssetPolicySummary/approvalStatus> ;
    sh:name "approval status" ;
    sh:description "The overall approval status of this asset, which is calculated based on the status of its individual policy topic entries." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISAPPROVED" "APPROVED_LIMITED" "APPROVED" "AREA_OF_INTEREST_ONLY" ) ;
  ] .

# Shape for Policy Topic Entry
googleads:PolicyTopicEntryShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicEntry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEntry/type> ;
    sh:name "type" ;
    sh:description "Describes the negative or positive effect this policy will have on serving." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PROHIBITED" "LIMITED" "FULLY_LIMITED" "DESCRIPTIVE" "BROADENING" "AREA_OF_INTEREST_ONLY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEntry/topic> ;
    sh:name "topic" ;
    sh:description "Policy topic this finding refers to. For example, \"ALCOHOL\", \"TRADEMARKS_IN_AD_TEXT\", or \"DESTINATION_NOT_WORKING\". The set of possible policy topics is not fixed for a particular API version and may change at any time." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEntry/evidences> ;
    sh:name "evidences" ;
    sh:description "Additional information that explains policy finding (for example, the brand name for a trademark finding)." ;
    sh:node googleads:PolicyTopicEvidenceShape ;
    sh:class googleads:PolicyTopicEvidence ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEntry/constraints> ;
    sh:name "constraints" ;
    sh:description "Indicates how serving of this resource may be affected (for example, not serving in a country)." ;
    sh:node googleads:PolicyTopicConstraintShape ;
    sh:class googleads:PolicyTopicConstraint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Policy Topic Evidence
googleads:PolicyTopicEvidenceShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicEvidence ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidence/websiteList> ;
    sh:name "website list" ;
    sh:description "List of websites linked with this resource." ;
    sh:node googleads:PolicyTopicEvidenceWebsiteListShape ;
    sh:class googleads:PolicyTopicEvidenceWebsiteList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidence/textList> ;
    sh:name "text list" ;
    sh:description "List of evidence found in the text of a resource." ;
    sh:node googleads:PolicyTopicEvidenceTextListShape ;
    sh:class googleads:PolicyTopicEvidenceTextList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidence/destinationMismatch> ;
    sh:name "destination mismatch" ;
    sh:description "Mismatch between the destinations of a resource's URLs." ;
    sh:node googleads:PolicyTopicEvidenceDestinationMismatchShape ;
    sh:class googleads:PolicyTopicEvidenceDestinationMismatch ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidence/destinationNotWorking> ;
    sh:name "destination not working" ;
    sh:description "Details when the destination is returning an HTTP error code or isn't functional in all locations for commonly used devices." ;
    sh:node googleads:PolicyTopicEvidenceDestinationNotWorkingShape ;
    sh:class googleads:PolicyTopicEvidenceDestinationNotWorking ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidence/languageCode> ;
    sh:name "language code" ;
    sh:description "The language the resource was detected to be written in. This is an IETF language tag such as \"en-US\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidence/destinationTextList> ;
    sh:name "destination text list" ;
    sh:description "The text in the destination of the resource that is causing a policy finding." ;
    sh:node googleads:PolicyTopicEvidenceDestinationTextListShape ;
    sh:class googleads:PolicyTopicEvidenceDestinationTextList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Policy Topic Evidence Website List
googleads:PolicyTopicEvidenceWebsiteListShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicEvidenceWebsiteList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceWebsiteList/websites> ;
    sh:name "websites" ;
    sh:description "Websites that caused the policy finding." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Policy Topic Evidence Text List
googleads:PolicyTopicEvidenceTextListShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicEvidenceTextList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceTextList/texts> ;
    sh:name "texts" ;
    sh:description "The fragments of text from the resource that caused the policy finding." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Policy Topic Evidence Destination Mismatch
googleads:PolicyTopicEvidenceDestinationMismatchShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicEvidenceDestinationMismatch ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceDestinationMismatch/urlTypes> ;
    sh:name "url types" ;
    sh:description "The set of URLs that did not match each other." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISPLAY_URL" "FINAL_URL" "FINAL_MOBILE_URL" "TRACKING_URL" "MOBILE_TRACKING_URL" ) ;
  ] .

# Shape for Policy Topic Evidence Destination Not Working
googleads:PolicyTopicEvidenceDestinationNotWorkingShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicEvidenceDestinationNotWorking ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceDestinationNotWorking/dnsErrorType> ;
    sh:name "dns error type" ;
    sh:description "The type of DNS error." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HOSTNAME_NOT_FOUND" "GOOGLE_CRAWLER_DNS_ISSUE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceDestinationNotWorking/lastCheckedDateTime> ;
    sh:name "last checked date time" ;
    sh:description "The time the URL was last checked. The format is \"YYYY-MM-DD HH:MM:SS\". Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceDestinationNotWorking/device> ;
    sh:name "device" ;
    sh:description "The type of device that failed to load the URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DESKTOP" "ANDROID" "IOS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceDestinationNotWorking/httpErrorCode> ;
    sh:name "http error code" ;
    sh:description "The HTTP error code." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceDestinationNotWorking/expandedUrl> ;
    sh:name "expanded url" ;
    sh:description "The full URL that didn't work." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Policy Topic Evidence Destination Text List
googleads:PolicyTopicEvidenceDestinationTextListShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicEvidenceDestinationTextList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicEvidenceDestinationTextList/destinationTexts> ;
    sh:name "destination texts" ;
    sh:description "List of text found in the resource's destination page." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Policy Topic Constraint
googleads:PolicyTopicConstraintShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicConstraint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicConstraint/countryConstraintList> ;
    sh:name "country constraint list" ;
    sh:description "Countries where the resource cannot serve." ;
    sh:node googleads:PolicyTopicConstraintCountryConstraintListShape ;
    sh:class googleads:PolicyTopicConstraintCountryConstraintList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicConstraint/certificateMissingInCountryList> ;
    sh:name "certificate missing in country list" ;
    sh:description "Countries where a certificate is required for serving." ;
    sh:node googleads:PolicyTopicConstraintCountryConstraintListShape ;
    sh:class googleads:PolicyTopicConstraintCountryConstraintList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicConstraint/certificateDomainMismatchInCountryList> ;
    sh:name "certificate domain mismatch in country list" ;
    sh:description "Countries where the resource's domain is not covered by the certificates associated with it." ;
    sh:node googleads:PolicyTopicConstraintCountryConstraintListShape ;
    sh:class googleads:PolicyTopicConstraintCountryConstraintList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicConstraint/resellerConstraint> ;
    sh:name "reseller constraint" ;
    sh:description "Reseller constraint." ;
    sh:node googleads:PolicyTopicConstraintResellerConstraintShape ;
    sh:class googleads:PolicyTopicConstraintResellerConstraint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Policy Topic Constraint Country Constraint List
googleads:PolicyTopicConstraintCountryConstraintListShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicConstraintCountryConstraintList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicConstraintCountryConstraintList/totalTargetedCountries> ;
    sh:name "total targeted countries" ;
    sh:description "Total number of countries targeted by the resource." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicConstraintCountryConstraintList/countries> ;
    sh:name "countries" ;
    sh:description "Countries in which serving is restricted." ;
    sh:node googleads:PolicyTopicConstraintCountryConstraintShape ;
    sh:class googleads:PolicyTopicConstraintCountryConstraint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Policy Topic Constraint Country Constraint
googleads:PolicyTopicConstraintCountryConstraintShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicConstraintCountryConstraint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicyTopicConstraintCountryConstraint/countryCriterion> ;
    sh:name "country criterion" ;
    sh:description "Geo target constant resource name of the country in which serving is constrained." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Policy Topic Constraint Reseller Constraint
googleads:PolicyTopicConstraintResellerConstraintShape a sh:NodeShape ;
  sh:targetClass googleads:PolicyTopicConstraintResellerConstraint .

# Shape for Ad Video Asset
googleads:AdVideoAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdVideoAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAsset/asset> ;
    sh:name "asset" ;
    sh:description "The Asset resource name of this video." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAsset/adVideoAssetInfo> ;
    sh:name "ad video asset info" ;
    sh:description "Contains info fields for this AdVideoAsset." ;
    sh:node googleads:AdVideoAssetInfoShape ;
    sh:class googleads:AdVideoAssetInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Video Asset Info
googleads:AdVideoAssetInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AdVideoAssetInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAssetInfo/adVideoAssetFeatureControl> ;
    sh:name "ad video asset feature control" ;
    sh:description "Defines feature controls for this AdVideoAsset during serving time. For example, whether YouTube comments should be enabled for Partnership Ads served on YouTube Shorts." ;
    sh:node googleads:AdVideoAssetLinkFeatureControlShape ;
    sh:class googleads:AdVideoAssetLinkFeatureControl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAssetInfo/adVideoAssetInventoryPreferences> ;
    sh:name "ad video asset inventory preferences" ;
    sh:description "List of inventory preferences for this AdVideoAsset. This field can only be set for DiscoveryVideoResponsiveAd. The video assets with an inventory asset preference set will be preferred over other videos from the same ad during serving time. For example, consider this ad being served for a specific inventory. The server will first try to match an eligible video with a matching preference for that inventory. Videos with no preferences are chosen only when a video with matching preference and eligible for a given ad slot can be found." ;
    sh:node googleads:AdVideoAssetInventoryPreferencesShape ;
    sh:class googleads:AdVideoAssetInventoryPreferences ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Video Asset Link Feature Control
googleads:AdVideoAssetLinkFeatureControlShape a sh:NodeShape ;
  sh:targetClass googleads:AdVideoAssetLinkFeatureControl ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAssetLinkFeatureControl/allowYoutubeComments> ;
    sh:name "allow youtube comments" ;
    sh:description "Defines if YouTube comments should be enabled for the creative using this YouTube video asset served on YouTube Shorts." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Video Asset Inventory Preferences
googleads:AdVideoAssetInventoryPreferencesShape a sh:NodeShape ;
  sh:targetClass googleads:AdVideoAssetInventoryPreferences ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAssetInventoryPreferences/inStreamPreference> ;
    sh:name "in stream preference" ;
    sh:description "When true, YouTube Video Asset with this inventory preference will be preferred when choosing a video to serve In Stream." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAssetInventoryPreferences/inFeedPreference> ;
    sh:name "in feed preference" ;
    sh:description "When true, YouTube Video Asset with this inventory preference will be preferred when choosing a video to serve In Feed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdVideoAssetInventoryPreferences/shortsPreference> ;
    sh:name "shorts preference" ;
    sh:description "When true, YouTube Video Asset with this inventory preference will be preferred when choosing a video to serve on YouTube Shorts." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Image Asset
googleads:AdImageAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdImageAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdImageAsset/asset> ;
    sh:name "asset" ;
    sh:description "The Asset resource name of this image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Call To Action Asset
googleads:AdCallToActionAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdCallToActionAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdCallToActionAsset/asset> ;
    sh:name "asset" ;
    sh:description "The Asset resource name of this call to action asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Display Upload Ad Info
googleads:DisplayUploadAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:DisplayUploadAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DisplayUploadAdInfo/mediaBundle> ;
    sh:name "media bundle" ;
    sh:description "A media bundle asset to be used in the ad. For information about the media bundle for HTML5_UPLOAD_AD, see https://support.google.com/google-ads/answer/1722096 Media bundles that are part of dynamic product types use a special format that needs to be created through the Google Web Designer. See https://support.google.com/webdesigner/answer/7543898 for more information." ;
    sh:node googleads:AdMediaBundleAssetShape ;
    sh:class googleads:AdMediaBundleAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DisplayUploadAdInfo/displayUploadProductType> ;
    sh:name "display upload product type" ;
    sh:description "The product type of this ad. See comments on the enum for details." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HTML5_UPLOAD_AD" "DYNAMIC_HTML5_EDUCATION_AD" "DYNAMIC_HTML5_FLIGHT_AD" "DYNAMIC_HTML5_HOTEL_RENTAL_AD" "DYNAMIC_HTML5_JOB_AD" "DYNAMIC_HTML5_LOCAL_AD" "DYNAMIC_HTML5_REAL_ESTATE_AD" "DYNAMIC_HTML5_CUSTOM_AD" "DYNAMIC_HTML5_TRAVEL_AD" "DYNAMIC_HTML5_HOTEL_AD" ) ;
  ] .

# Shape for Ad Media Bundle Asset
googleads:AdMediaBundleAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdMediaBundleAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdMediaBundleAsset/asset> ;
    sh:name "asset" ;
    sh:description "The Asset resource name of this media bundle." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Parameter
googleads:CustomParameterShape a sh:NodeShape ;
  sh:targetClass googleads:CustomParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomParameter/key> ;
    sh:name "key" ;
    sh:description "The key matching the parameter tag name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomParameter/value> ;
    sh:name "value" ;
    sh:description "The value to be substituted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Image Ad Info
googleads:ImageAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ImageAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/data> ;
    sh:name "data" ;
    sh:description "Raw image data as bytes." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/adIdToCopyImageFrom> ;
    sh:name "ad id to copy image from" ;
    sh:description "An ad ID to copy the image from." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/pixelHeight> ;
    sh:name "pixel height" ;
    sh:description "Height in pixels of the full size image." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/mimeType> ;
    sh:name "mime type" ;
    sh:description "The mime type of the image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IMAGE_JPEG" "IMAGE_GIF" "IMAGE_PNG" "FLASH" "TEXT_HTML" "PDF" "MSWORD" "MSEXCEL" "RTF" "AUDIO_WAV" "AUDIO_MP3" "HTML5_AD_ZIP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/previewPixelHeight> ;
    sh:name "preview pixel height" ;
    sh:description "Height in pixels of the preview size image." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/imageUrl> ;
    sh:name "image url" ;
    sh:description "URL of the full size image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/pixelWidth> ;
    sh:name "pixel width" ;
    sh:description "Width in pixels of the full size image." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/name> ;
    sh:name "name" ;
    sh:description "The name of the image. If the image was created from a MediaFile, this is the MediaFile's name. If the image was created from bytes, this is empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/previewImageUrl> ;
    sh:name "preview image url" ;
    sh:description "URL of the preview size image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/imageAsset> ;
    sh:name "image asset" ;
    sh:description "The image assets used for the ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAdInfo/previewPixelWidth> ;
    sh:name "preview pixel width" ;
    sh:description "Width in pixels of the preview size image." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Demand Gen Carousel Ad Info
googleads:DemandGenCarouselAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:DemandGenCarouselAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselAdInfo/headline> ;
    sh:name "headline" ;
    sh:description "Required. Headline of the ad." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselAdInfo/callToActionText> ;
    sh:name "call to action text" ;
    sh:description "Call to action text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselAdInfo/carouselCards> ;
    sh:name "carousel cards" ;
    sh:description "Required. Carousel cards that will display with the ad. Min 2 max 10." ;
    sh:node googleads:AdDemandGenCarouselCardAssetShape ;
    sh:class googleads:AdDemandGenCarouselCardAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselAdInfo/description> ;
    sh:name "description" ;
    sh:description "Required. The descriptive text of the ad." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselAdInfo/businessName> ;
    sh:name "business name" ;
    sh:description "Required. The Advertiser/brand name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselAdInfo/logoImage> ;
    sh:name "logo image" ;
    sh:description "Required. Logo image to be used in the ad. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%)." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Demand Gen Carousel Card Asset
googleads:AdDemandGenCarouselCardAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdDemandGenCarouselCardAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdDemandGenCarouselCardAsset/asset> ;
    sh:name "asset" ;
    sh:description "The Asset resource name of this discovery carousel card." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Video Ad Info
googleads:VideoAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoAdInfo/inFeed> ;
    sh:name "in feed" ;
    sh:description "In-feed video ad format." ;
    sh:node googleads:InFeedVideoAdInfoShape ;
    sh:class googleads:InFeedVideoAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoAdInfo/audio> ;
    sh:name "audio" ;
    sh:description "YouTube Audio ad format." ;
    sh:node googleads:YouTubeAudioAdInfoShape ;
    sh:class googleads:YouTubeAudioAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoAdInfo/bumper> ;
    sh:name "bumper" ;
    sh:description "Video bumper in-stream ad format." ;
    sh:node googleads:VideoBumperInStreamAdInfoShape ;
    sh:class googleads:VideoBumperInStreamAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoAdInfo/inStream> ;
    sh:name "in stream" ;
    sh:description "Video TrueView in-stream ad format." ;
    sh:node googleads:VideoTrueViewInStreamAdInfoShape ;
    sh:class googleads:VideoTrueViewInStreamAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoAdInfo/nonSkippable> ;
    sh:name "non skippable" ;
    sh:description "Video non-skippable in-stream ad format." ;
    sh:node googleads:VideoNonSkippableInStreamAdInfoShape ;
    sh:class googleads:VideoNonSkippableInStreamAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoAdInfo/video> ;
    sh:name "video" ;
    sh:description "The YouTube video assets used for the ad." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoAdInfo/outStream> ;
    sh:name "out stream" ;
    sh:description "Video out-stream ad format." ;
    sh:node googleads:VideoOutstreamAdInfoShape ;
    sh:class googleads:VideoOutstreamAdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for In Feed Video Ad Info
googleads:InFeedVideoAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:InFeedVideoAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InFeedVideoAdInfo/description1> ;
    sh:name "description1" ;
    sh:description "First text line for the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InFeedVideoAdInfo/description2> ;
    sh:name "description2" ;
    sh:description "Second text line for the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InFeedVideoAdInfo/thumbnail> ;
    sh:name "thumbnail" ;
    sh:description "Video thumbnail image to use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT_THUMBNAIL" "THUMBNAIL_1" "THUMBNAIL_2" "THUMBNAIL_3" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InFeedVideoAdInfo/headline> ;
    sh:name "headline" ;
    sh:description "The headline of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for You Tube Audio Ad Info
googleads:YouTubeAudioAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:YouTubeAudioAdInfo .

# Shape for Video Bumper In Stream Ad Info
googleads:VideoBumperInStreamAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoBumperInStreamAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoBumperInStreamAdInfo/companionBanner> ;
    sh:name "companion banner" ;
    sh:description "The image assets of the companion banner used with the ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoBumperInStreamAdInfo/actionButtonLabel> ;
    sh:name "action button label" ;
    sh:description "Label on the \"Call To Action\" button taking the user to the video ad's final URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoBumperInStreamAdInfo/actionHeadline> ;
    sh:name "action headline" ;
    sh:description "Additional text displayed with the CTA (call-to-action) button to give context and encourage clicking on the button." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Video True View In Stream Ad Info
googleads:VideoTrueViewInStreamAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoTrueViewInStreamAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoTrueViewInStreamAdInfo/companionBanner> ;
    sh:name "companion banner" ;
    sh:description "The image assets of the companion banner used with the ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoTrueViewInStreamAdInfo/actionButtonLabel> ;
    sh:name "action button label" ;
    sh:description "Label on the CTA (call-to-action) button taking the user to the video ad's final URL. Required for TrueView for action campaigns, optional otherwise." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoTrueViewInStreamAdInfo/actionHeadline> ;
    sh:name "action headline" ;
    sh:description "Additional text displayed with the CTA (call-to-action) button to give context and encourage clicking on the button." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Video Non Skippable In Stream Ad Info
googleads:VideoNonSkippableInStreamAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoNonSkippableInStreamAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoNonSkippableInStreamAdInfo/companionBanner> ;
    sh:name "companion banner" ;
    sh:description "The image assets of the companion banner used with the ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoNonSkippableInStreamAdInfo/actionButtonLabel> ;
    sh:name "action button label" ;
    sh:description "Label on the \"Call To Action\" button taking the user to the video ad's final URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoNonSkippableInStreamAdInfo/actionHeadline> ;
    sh:name "action headline" ;
    sh:description "Additional text displayed with the \"Call To Action\" button to give context and encourage clicking on the button." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Video Outstream Ad Info
googleads:VideoOutstreamAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoOutstreamAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoOutstreamAdInfo/headline> ;
    sh:name "headline" ;
    sh:description "The headline of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoOutstreamAdInfo/description> ;
    sh:name "description" ;
    sh:description "The description line." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Shopping Smart Ad Info
googleads:ShoppingSmartAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ShoppingSmartAdInfo .

# Shape for Shopping Comparison Listing Ad Info
googleads:ShoppingComparisonListingAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ShoppingComparisonListingAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingComparisonListingAdInfo/headline> ;
    sh:name "headline" ;
    sh:description "Headline of the ad. This field is required. Allowed length is between 25 and 45 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Smart Campaign Ad Info
googleads:SmartCampaignAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:SmartCampaignAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets, each of which corresponds to a headline when the ad serves. This list consists of a minimum of 3 and up to 15 text assets." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets, each of which corresponds to a description when the ad serves. This list consists of a minimum of 2 and up to 4 text assets." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for App Engagement Ad Info
googleads:AppEngagementAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AppEngagementAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppEngagementAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppEngagementAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets for headlines. When the ad serves the headlines will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppEngagementAdInfo/images> ;
    sh:name "images" ;
    sh:description "List of image assets that may be displayed with the ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppEngagementAdInfo/videos> ;
    sh:name "videos" ;
    sh:description "List of video assets that may be displayed with the ad." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Demand Gen Multi Asset Ad Info
googleads:DemandGenMultiAssetAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:DemandGenMultiAssetAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/logoImages> ;
    sh:name "logo images" ;
    sh:description "Logo image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%). At least 1 and max 5 logo images can be specified." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/businessName> ;
    sh:name "business name" ;
    sh:description "The Advertiser/brand name. Maximum display width is 25. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/tallPortraitMarketingImages> ;
    sh:name "tall portrait marketing images" ;
    sh:description "Tall portrait marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 600x1067 and the aspect ratio must be 9:16 (+-1%). Combined with `marketing_images`, `square_marketing_images`, and `portrait_marketing_images`, the maximum is 20." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/marketingImages> ;
    sh:name "marketing images" ;
    sh:description "Marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 600x314 and the aspect ratio must be 1.91:1 (+-1%). Required if square_marketing_images is not present. Combined with `square_marketing_images`, `portrait_marketing_images`, and `tall_portrait_marketing_images` the maximum is 20." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/portraitMarketingImages> ;
    sh:name "portrait marketing images" ;
    sh:description "Portrait marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 480x600 and the aspect ratio must be 4:5 (+-1%). Combined with `marketing_images`, `square_marketing_images`, and `tall_portrait_marketing_images` the maximum is 20." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "The descriptive text of the ad. Maximum display width is 90. At least 1 and max 5 descriptions can be specified." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/classicDisplayImages> ;
    sh:name "classic display images" ;
    sh:description "Classic display image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. At most 20 classic display images can be specified per ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/squareMarketingImages> ;
    sh:name "square marketing images" ;
    sh:description "Square marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 300x300 and the aspect ratio must be 1:1 (+-1%). Required if marketing_images is not present. Combined with `marketing_images`, `portrait_marketing_images`, and `tall_portrait_marketing_images` the maximum is 20." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/callToActionText> ;
    sh:name "call to action text" ;
    sh:description "Call to action text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenMultiAssetAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "Headline text asset of the ad. Maximum display width is 30. At least 1 and max 5 headlines can be specified." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Legacy App Install Ad Info
googleads:LegacyAppInstallAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LegacyAppInstallAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyAppInstallAdInfo/description1> ;
    sh:name "description1" ;
    sh:description "The first description line of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyAppInstallAdInfo/description2> ;
    sh:name "description2" ;
    sh:description "The second description line of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyAppInstallAdInfo/appStore> ;
    sh:name "app store" ;
    sh:description "The app store the mobile app is available in." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPLE_APP_STORE" "GOOGLE_PLAY" "WINDOWS_STORE" "WINDOWS_PHONE_STORE" "CN_APP_STORE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyAppInstallAdInfo/appId> ;
    sh:name "app id" ;
    sh:description "The ID of the mobile app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyAppInstallAdInfo/headline> ;
    sh:name "headline" ;
    sh:description "The headline of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Responsive Search Ad Info
googleads:ResponsiveSearchAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ResponsiveSearchAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveSearchAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets for headlines. When the ad serves the headlines will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveSearchAdInfo/path1> ;
    sh:name "path1" ;
    sh:description "First part of text that can be appended to the URL in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveSearchAdInfo/path2> ;
    sh:name "path2" ;
    sh:description "Second part of text that can be appended to the URL in the ad. This field can only be set when `path1` is also set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveSearchAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Hotel Ad Info
googleads:HotelAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelAdInfo .

# Shape for Demand Gen Product Ad Info
googleads:DemandGenProductAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:DemandGenProductAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenProductAdInfo/breadcrumb2> ;
    sh:name "breadcrumb2" ;
    sh:description "Second part of text that appears in the ad with the displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenProductAdInfo/callToAction> ;
    sh:name "call to action" ;
    sh:description "Asset of type CallToActionAsset used for the \"Call To Action\" button." ;
    sh:node googleads:AdCallToActionAssetShape ;
    sh:class googleads:AdCallToActionAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenProductAdInfo/logoImage> ;
    sh:name "logo image" ;
    sh:description "Required. Logo image to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%)." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenProductAdInfo/breadcrumb1> ;
    sh:name "breadcrumb1" ;
    sh:description "First part of text that appears in the ad with the displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenProductAdInfo/businessName> ;
    sh:name "business name" ;
    sh:description "Required. The advertiser/brand name." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenProductAdInfo/headline> ;
    sh:name "headline" ;
    sh:description "Required. Text asset used for the short headline." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenProductAdInfo/description> ;
    sh:name "description" ;
    sh:description "Required. Text asset used for the description." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Synthetic Content Info
googleads:SyntheticContentInfoShape a sh:NodeShape ;
  sh:targetClass googleads:SyntheticContentInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SyntheticContentInfo/systemAttestation> ;
    sh:name "system attestation" ;
    sh:description "Output only. Information about synthetic content generated by Google's systems." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:SyntheticContentAttestationShape ;
    sh:class googleads:SyntheticContentAttestation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SyntheticContentInfo/advertiserAttestation> ;
    sh:name "advertiser attestation" ;
    sh:description "Input provided by the advertiser." ;
    sh:node googleads:SyntheticContentAttestationShape ;
    sh:class googleads:SyntheticContentAttestation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Synthetic Content Attestation
googleads:SyntheticContentAttestationShape a sh:NodeShape ;
  sh:targetClass googleads:SyntheticContentAttestation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SyntheticContentAttestation/status> ;
    sh:name "status" ;
    sh:description "Indicates whether the content is considered synthetic by this source." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOT_SYNTHETIC" "IS_SYNTHETIC" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SyntheticContentAttestation/source> ;
    sh:name "source" ;
    sh:description "The source of the synthetic content attestation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER_ATTESTED" "GOOGLE_GENERATED_ADVERTISER_REVIEWED" "GOOGLE_GENERATED_FULLY_AUTOMATED" ) ;
  ] .

# Shape for Video Responsive Ad Info
googleads:VideoResponsiveAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoResponsiveAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/breadcrumb2> ;
    sh:name "breadcrumb2" ;
    sh:description "Second part of text that appears in the ad with the displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/companionBanners> ;
    sh:name "companion banners" ;
    sh:description "List of image assets used for the companion banner. Currently, only a single value for the companion banner asset is supported." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets used for the description. Currently, only a single value for the description is supported." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets used for the short headline. Currently, only a single value for the short headline is supported." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/videos> ;
    sh:name "videos" ;
    sh:description "Required. List of YouTube video assets used for the ad. Currently, only a single value for the YouTube video asset is supported." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/longHeadlines> ;
    sh:name "long headlines" ;
    sh:description "List of text assets used for the long headline. Currently, only a single value for the long headline is supported." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/businessName> ;
    sh:name "business name" ;
    sh:description "Required. Advertiser/brand name. Maximum display width is 25 characters." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/breadcrumb1> ;
    sh:name "breadcrumb1" ;
    sh:description "First part of text that appears in the ad with the displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/logoImages> ;
    sh:name "logo images" ;
    sh:description "Required. Logo image to be used in the ad. The minimum size is 128x128 and the aspect ratio must be 1:1(+-1%)." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoResponsiveAdInfo/callToActions> ;
    sh:name "call to actions" ;
    sh:description "List of text assets used for the button, for example, the \"Call To Action\" button. Currently, only a single value for the button is supported." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Url Collection
googleads:UrlCollectionShape a sh:NodeShape ;
  sh:targetClass googleads:UrlCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UrlCollection/urlCollectionId> ;
    sh:name "url collection id" ;
    sh:description "Unique identifier for this UrlCollection instance." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UrlCollection/finalUrls> ;
    sh:name "final urls" ;
    sh:description "A list of possible final URLs." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UrlCollection/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "A list of possible final mobile URLs." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UrlCollection/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "URL template for constructing a tracking URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for App Pre Registration Ad Info
googleads:AppPreRegistrationAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AppPreRegistrationAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppPreRegistrationAdInfo/youtubeVideos> ;
    sh:name "youtube videos" ;
    sh:description "List of YouTube video asset IDs whose videos may be displayed with the ad." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppPreRegistrationAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppPreRegistrationAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets for headlines. When the ad serves the headlines will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppPreRegistrationAdInfo/images> ;
    sh:name "images" ;
    sh:description "List of image asset IDs whose images may be displayed with the ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Legacy Responsive Display Ad Info
googleads:LegacyResponsiveDisplayAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LegacyResponsiveDisplayAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/businessName> ;
    sh:name "business name" ;
    sh:description "The business name in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/squareLogoImage> ;
    sh:name "square logo image" ;
    sh:description "The MediaFile resource name of the square logo image used in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/longHeadline> ;
    sh:name "long headline" ;
    sh:description "The long version of the ad's headline." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/squareMarketingImage> ;
    sh:name "square marketing image" ;
    sh:description "The MediaFile resource name of the square marketing image used in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/formatSetting> ;
    sh:name "format setting" ;
    sh:description "Specifies which format the ad will be served in. Default is ALL_FORMATS." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ALL_FORMATS" "NON_NATIVE" "NATIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/mainColor> ;
    sh:name "main color" ;
    sh:description "The main color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/callToActionText> ;
    sh:name "call to action text" ;
    sh:description "The call-to-action text for the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/accentColor> ;
    sh:name "accent color" ;
    sh:description "The accent color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/pricePrefix> ;
    sh:name "price prefix" ;
    sh:description "Prefix before price. For example, 'as low as'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/logoImage> ;
    sh:name "logo image" ;
    sh:description "The MediaFile resource name of the logo image used in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/promoText> ;
    sh:name "promo text" ;
    sh:description "Promotion text used for dynamic formats of responsive ads. For example 'Free two-day shipping'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/description> ;
    sh:name "description" ;
    sh:description "The description of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/marketingImage> ;
    sh:name "marketing image" ;
    sh:description "The MediaFile resource name of the marketing image used in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/allowFlexibleColor> ;
    sh:name "allow flexible color" ;
    sh:description "Advertiser's consent to allow flexible color. When true, the ad may be served with different color if necessary. When false, the ad will be served with the specified colors or a neutral color. The default value is `true`. Must be true if `main_color` and `accent_color` are not set." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LegacyResponsiveDisplayAdInfo/shortHeadline> ;
    sh:name "short headline" ;
    sh:description "The short version of the ad's headline." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for App Ad Info
googleads:AppAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AppAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppAdInfo/mandatoryAdText> ;
    sh:name "mandatory ad text" ;
    sh:description "Mandatory ad text." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppAdInfo/youtubeVideos> ;
    sh:name "youtube videos" ;
    sh:description "List of YouTube video assets that may be displayed with the ad." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets for headlines. When the ad serves the headlines will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppAdInfo/images> ;
    sh:name "images" ;
    sh:description "List of image assets that may be displayed with the ad." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppAdInfo/html5MediaBundles> ;
    sh:name "html5media bundles" ;
    sh:description "List of media bundle assets that may be used with the ad." ;
    sh:node googleads:AdMediaBundleAssetShape ;
    sh:class googleads:AdMediaBundleAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppAdInfo/appDeepLink> ;
    sh:name "app deep link" ;
    sh:description "An app deep link asset that may be used with the ad." ;
    sh:node googleads:AdAppDeepLinkAssetShape ;
    sh:class googleads:AdAppDeepLinkAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad App Deep Link Asset
googleads:AdAppDeepLinkAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdAppDeepLinkAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdAppDeepLinkAsset/asset> ;
    sh:name "asset" ;
    sh:description "The Asset resource name of this app deep link asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Travel Ad Info
googleads:TravelAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:TravelAdInfo .

# Shape for Expanded Dynamic Search Ad Info
googleads:ExpandedDynamicSearchAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExpandedDynamicSearchAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedDynamicSearchAdInfo/description> ;
    sh:name "description" ;
    sh:description "The description of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedDynamicSearchAdInfo/description2> ;
    sh:name "description2" ;
    sh:description "The second description of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Final App Url
googleads:FinalAppUrlShape a sh:NodeShape ;
  sh:targetClass googleads:FinalAppUrl ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalAppUrl/osType> ;
    sh:name "os type" ;
    sh:description "The operating system targeted by this URL. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IOS" "ANDROID" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalAppUrl/url> ;
    sh:name "url" ;
    sh:description "The app deep link URL. Deep links specify a location in an app that corresponds to the content you'd like to show, and should be of the form {scheme}://{host_path} The scheme identifies which app to open. For your app, you can use a custom scheme that starts with the app's name. The host and path specify the unique location in the app where your content exists. Example: \"exampleapp://productid_1234\". Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Text Ad Info
googleads:TextAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:TextAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TextAdInfo/description2> ;
    sh:name "description2" ;
    sh:description "The second line of the ad's description." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TextAdInfo/description1> ;
    sh:name "description1" ;
    sh:description "The first line of the ad's description." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TextAdInfo/headline> ;
    sh:name "headline" ;
    sh:description "The headline of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Local Ad Info
googleads:LocalAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LocalAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/callToActions> ;
    sh:name "call to actions" ;
    sh:description "List of text assets for call-to-actions. When the ad serves the call-to-actions will be selected from this list. At least 1 and at most 5 call-to-actions must be specified." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "List of text assets for headlines. When the ad serves the headlines will be selected from this list. At least 1 and at most 5 headlines must be specified." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/videos> ;
    sh:name "videos" ;
    sh:description "List of YouTube video assets that may be displayed with the ad. At least 1 and at most 20 video assets must be specified." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/path2> ;
    sh:name "path2" ;
    sh:description "Second part of optional text that can be appended to the URL in the ad. This field can only be set when `path1` is also set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list. At least 1 and at most 5 descriptions must be specified." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/marketingImages> ;
    sh:name "marketing images" ;
    sh:description "List of marketing image assets that may be displayed with the ad. The images must be 314x600 pixels or 320x320 pixels. At least 1 and at most 20 image assets must be specified." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/logoImages> ;
    sh:name "logo images" ;
    sh:description "List of logo image assets that may be displayed with the ad. The images must be 128x128 pixels and not larger than 120KB. At least 1 and at most 5 image assets must be specified." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalAdInfo/path1> ;
    sh:name "path1" ;
    sh:description "First part of optional text that can be appended to the URL in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Expanded Text Ad Info
googleads:ExpandedTextAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExpandedTextAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedTextAdInfo/headlinePart2> ;
    sh:name "headline part2" ;
    sh:description "The second part of the ad's headline." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedTextAdInfo/description> ;
    sh:name "description" ;
    sh:description "The description of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedTextAdInfo/description2> ;
    sh:name "description2" ;
    sh:description "The second description of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedTextAdInfo/path2> ;
    sh:name "path2" ;
    sh:description "Additional text that can appear alongside the ad's displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedTextAdInfo/headlinePart1> ;
    sh:name "headline part1" ;
    sh:description "The first part of the ad's headline." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedTextAdInfo/headlinePart3> ;
    sh:name "headline part3" ;
    sh:description "The third part of the ad's headline." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedTextAdInfo/path1> ;
    sh:name "path1" ;
    sh:description "The text that can appear alongside the ad's displayed URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Shopping Product Ad Info
googleads:ShoppingProductAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ShoppingProductAdInfo .

# Shape for Responsive Display Ad Info
googleads:ResponsiveDisplayAdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ResponsiveDisplayAdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/businessName> ;
    sh:name "business name" ;
    sh:description "The advertiser/brand name. Maximum display width is 25." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/longHeadline> ;
    sh:name "long headline" ;
    sh:description "A required long format headline. The maximum length is 90 characters." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/formatSetting> ;
    sh:name "format setting" ;
    sh:description "Specifies which format the ad will be served in. Default is ALL_FORMATS." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ALL_FORMATS" "NON_NATIVE" "NATIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/squareLogoImages> ;
    sh:name "square logo images" ;
    sh:description "Square logo images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%). Combined with `logo_images`, the maximum is 5." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/marketingImages> ;
    sh:name "marketing images" ;
    sh:description "Marketing images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 600x314 and the aspect ratio must be 1.91:1 (+-1%). At least one `marketing_image` is required. Combined with `square_marketing_images`, the maximum is 15." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/mainColor> ;
    sh:name "main color" ;
    sh:description "The main color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/controlSpec> ;
    sh:name "control spec" ;
    sh:description "Specification for various creative controls." ;
    sh:node googleads:ResponsiveDisplayAdControlSpecShape ;
    sh:class googleads:ResponsiveDisplayAdControlSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/callToActionText> ;
    sh:name "call to action text" ;
    sh:description "The call-to-action text for the ad. Maximum display width is 30." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/logoImages> ;
    sh:name "logo images" ;
    sh:description "Logo images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 512x128 and the aspect ratio must be 4:1 (+-1%). Combined with `square_logo_images`, the maximum is 5." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/accentColor> ;
    sh:name "accent color" ;
    sh:description "The accent color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/pricePrefix> ;
    sh:name "price prefix" ;
    sh:description "Prefix before price. For example, 'as low as'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/descriptions> ;
    sh:name "descriptions" ;
    sh:description "Descriptive texts for the ad. The maximum length is 90 characters. At least 1 and max 5 headlines can be specified." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/promoText> ;
    sh:name "promo text" ;
    sh:description "Promotion text used for dynamic formats of responsive ads. For example 'Free two-day shipping'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/squareMarketingImages> ;
    sh:name "square marketing images" ;
    sh:description "Square marketing images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 300x300 and the aspect ratio must be 1:1 (+-1%). At least one square `marketing_image` is required. Combined with `marketing_images`, the maximum is 15." ;
    sh:node googleads:AdImageAssetShape ;
    sh:class googleads:AdImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/youtubeVideos> ;
    sh:name "youtube videos" ;
    sh:description "Optional YouTube videos for the ad. A maximum of 5 videos can be specified." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/allowFlexibleColor> ;
    sh:name "allow flexible color" ;
    sh:description "Advertiser's consent to allow flexible color. When true, the ad may be served with different color if necessary. When false, the ad will be served with the specified colors or a neutral color. The default value is `true`. Must be true if `main_color` and `accent_color` are not set." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdInfo/headlines> ;
    sh:name "headlines" ;
    sh:description "Short format headlines for the ad. The maximum length is 30 characters. At least 1 and max 5 headlines can be specified." ;
    sh:class googleads:AdTextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Responsive Display Ad Control Spec
googleads:ResponsiveDisplayAdControlSpecShape a sh:NodeShape ;
  sh:targetClass googleads:ResponsiveDisplayAdControlSpec ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdControlSpec/enableAutogenVideo> ;
    sh:name "enable autogen video" ;
    sh:description "Whether the advertiser has opted into auto-gen video feature." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ResponsiveDisplayAdControlSpec/enableAssetEnhancements> ;
    sh:name "enable asset enhancements" ;
    sh:description "Whether the advertiser has opted into the asset enhancements feature." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Address Info
googleads:AddressInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AddressInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AddressInfo/streetAddress> ;
    sh:name "street address" ;
    sh:description "Street address line 1." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AddressInfo/provinceCode> ;
    sh:name "province code" ;
    sh:description "Province or state code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AddressInfo/cityName> ;
    sh:name "city name" ;
    sh:description "Name of the city." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AddressInfo/postalCode> ;
    sh:name "postal code" ;
    sh:description "Postal code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AddressInfo/provinceName> ;
    sh:name "province name" ;
    sh:description "Province or state name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AddressInfo/countryCode> ;
    sh:name "country code" ;
    sh:description "Country code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AddressInfo/streetAddress2> ;
    sh:name "street address2" ;
    sh:description "Street address line 2. This field is write-only. It is only used for calculating the longitude and latitude of an address when geo_point is empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group
googleads:AdGroupShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/adRotationMode> ;
    sh:name "ad rotation mode" ;
    sh:description "The ad rotation mode of the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OPTIMIZE" "ROTATE_FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The URL template for constructing a tracking URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/targetCpmMicros> ;
    sh:name "target cpm micros" ;
    sh:description "Average amount in micros that the advertiser is willing to pay for every thousand times the ad is shown." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/fixedCpmMicros> ;
    sh:name "fixed cpm micros" ;
    sh:description "The fixed amount in micros that the advertiser pays for every thousand impressions of the ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "URL template for appending params to Final URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/aiMaxAdGroupSetting> ;
    sh:name "ai max ad group setting" ;
    sh:description "Settings for AI Max feature in standard search adgroups." ;
    sh:node googleads:AdGroupAiMaxAdGroupSettingShape ;
    sh:class googleads:AdGroupAiMaxAdGroupSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. Provides aggregated view into why an ad group is not serving or not serving optimally." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "NOT_ELIGIBLE" "LIMITED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/effectiveTargetRoasSource> ;
    sh:name "effective target roas source" ;
    sh:description "Output only. Source of the effective target ROAS. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BIDDING_STRATEGY" "AD_GROUP" "AD_GROUP_CRITERION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/excludeDemographicExpansion> ;
    sh:name "exclude demographic expansion" ;
    sh:description "When this value is true, demographics will be excluded from the types of targeting which are expanded when optimized_targeting_enabled is true. When optimized_targeting_enabled is false, this field is ignored. Default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "The target CPA (cost-per-acquisition). If the ad group's campaign bidding strategy is TargetCpa or MaximizeConversions (with its target_cpa field set), then this field overrides the target CPA specified in the campaign's bidding strategy. Otherwise, this value is ignored." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/optimizedTargetingEnabled> ;
    sh:name "optimized targeting enabled" ;
    sh:description "True if optimized targeting is enabled. Optimized Targeting is the replacement for Audience Expansion." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/labels> ;
    sh:name "labels" ;
    sh:description "Output only. The resource names of labels attached to this ad group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/effectiveCpcBidMicros> ;
    sh:name "effective cpc bid micros" ;
    sh:description "Output only. Value will be same as that of the CPC (cost-per-click) bid value when the bidding strategy is one of manual cpc, enhanced cpc, page one promoted or target outrank share, otherwise the value will be null." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/excludedParentAssetFieldTypes> ;
    sh:name "excluded parent asset field types" ;
    sh:description "The asset field types that should be excluded from this ad group. Asset links with these field types will not be inherited by this ad group from the upper levels." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/targetCpcMicros> ;
    sh:name "target cpc micros" ;
    sh:description "Average amount in micros that the advertiser is willing to pay for every ad click. Overrides the target CPC configured at the campaign level." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/name> ;
    sh:name "name" ;
    sh:description "The name of the ad group. This field is required and should not be empty when creating new ad groups. It must contain fewer than 255 UTF-8 full-width characters. It must not contain any null (code point 0x0), NL line feed (code point 0xA) or carriage return (code point 0xD) characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/effectiveTargetCpaSource> ;
    sh:name "effective target cpa source" ;
    sh:description "Output only. Source of the effective target CPA. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BIDDING_STRATEGY" "AD_GROUP" "AD_GROUP_CRITERION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. Provides reasons for why an ad group is not serving or not serving optimally." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_REMOVED" "CAMPAIGN_PAUSED" "CAMPAIGN_PENDING" "CAMPAIGN_ENDED" "AD_GROUP_PAUSED" "AD_GROUP_REMOVED" "AD_GROUP_INCOMPLETE" "KEYWORDS_PAUSED" "NO_KEYWORDS" "AD_GROUP_ADS_PAUSED" "NO_AD_GROUP_ADS" "HAS_ADS_DISAPPROVED" "HAS_ADS_LIMITED_BY_POLICY" "MOST_ADS_UNDER_REVIEW" "CAMPAIGN_DRAFT" "AD_GROUP_PAUSED_DUE_TO_LOW_ACTIVITY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/targetRoas> ;
    sh:name "target roas" ;
    sh:description "The target ROAS (return-on-ad-spend) for this ad group. This field lets you override the target ROAS specified in the campaign's bidding strategy, but only if the campaign is using a standard (not portfolio) `TargetRoas` strategy or a standard `MaximizeConversionValue` strategy with its `target_roas` field set. If the campaign is using a portfolio bidding strategy, this field cannot be set and attempting to do so will result in an error. For any other bidding strategies, this value is ignored. To see the actual target ROAS being used by the ad group, considering potential overrides, query the `effective_target_roas` and `effective_target_roas_source` fields." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/type> ;
    sh:name "type" ;
    sh:description "Immutable. The type of the ad group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH_STANDARD" "DISPLAY_STANDARD" "SHOPPING_PRODUCT_ADS" "HOTEL_ADS" "SHOPPING_SMART_ADS" "VIDEO_BUMPER" "VIDEO_TRUE_VIEW_IN_STREAM" "VIDEO_TRUE_VIEW_IN_DISPLAY" "VIDEO_NON_SKIPPABLE_IN_STREAM" "SEARCH_DYNAMIC_ADS" "SHOPPING_COMPARISON_LISTING_ADS" "PROMOTED_HOTEL_ADS" "VIDEO_RESPONSIVE" "VIDEO_EFFICIENT_REACH" "SMART_CAMPAIGN_ADS" "TRAVEL_ADS" "YOUTUBE_AUDIO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/effectiveTargetRoas> ;
    sh:name "effective target roas" ;
    sh:description "Output only. The effective target ROAS (return-on-ad-spend). This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/excludedParentAssetSetTypes> ;
    sh:name "excluded parent asset set types" ;
    sh:description "The asset set types that should be excluded from this ad group. Asset set links with these types will not be inherited by this ad group from the upper levels. Location group types (GMB_DYNAMIC_LOCATION_GROUP, CHAIN_DYNAMIC_LOCATION_GROUP, and STATIC_LOCATION_GROUP) are child types of LOCATION_SYNC. Therefore, if LOCATION_SYNC is set for this field, all location group asset sets are not allowed to be linked to this ad group, and all Location Extension (LE) and Affiliate Location Extensions (ALE) will not be served under this ad group. Only LOCATION_SYNC is currently supported." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PAGE_FEED" "DYNAMIC_EDUCATION" "MERCHANT_CENTER_FEED" "DYNAMIC_REAL_ESTATE" "DYNAMIC_CUSTOM" "DYNAMIC_HOTELS_AND_RENTALS" "DYNAMIC_FLIGHTS" "DYNAMIC_TRAVEL" "DYNAMIC_LOCAL" "DYNAMIC_JOBS" "LOCATION_SYNC" "BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP" "CHAIN_DYNAMIC_LOCATION_GROUP" "STATIC_LOCATION_GROUP" "HOTEL_PROPERTY" "TRAVEL_FEED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/status> ;
    sh:name "status" ;
    sh:description "The status of the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "PAUSED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/targetingSetting> ;
    sh:name "targeting setting" ;
    sh:description "Setting for targeting related features." ;
    sh:node googleads:TargetingSettingShape ;
    sh:class googleads:TargetingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/cpvBidMicros> ;
    sh:name "cpv bid micros" ;
    sh:description "The CPV (cost-per-view) bid." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/targetCpvMicros> ;
    sh:name "target cpv micros" ;
    sh:description "Average amount in micros that the advertiser is willing to pay for every ad view." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/displayCustomBidDimension> ;
    sh:name "display custom bid dimension" ;
    sh:description "Lets advertisers specify a targeting dimension on which to place absolute bids. This is only applicable for campaigns that target only the display network and not search." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "AUDIENCE" "TOPIC" "GENDER" "AGE_RANGE" "PLACEMENT" "PARENTAL_STATUS" "INCOME_RANGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/videoAdGroupSettings> ;
    sh:name "video ad group settings" ;
    sh:description "Settings for video ad groups." ;
    sh:node googleads:AdGroupVideoAdGroupSettingsShape ;
    sh:class googleads:AdGroupVideoAdGroupSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/baseAdGroup> ;
    sh:name "base ad group" ;
    sh:description "Output only. For draft or experiment ad groups, this field is the resource name of the base ad group from which this ad group was created. If a draft or experiment ad group does not have a base ad group, then this field is null. For base ad groups, this field equals the ad group resource name. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group. Ad group resource names have the form: `customers/{customer_id}/adGroups/{ad_group_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/percentCpcBidMicros> ;
    sh:name "percent cpc bid micros" ;
    sh:description "The percent cpc bid amount, expressed as a fraction of the advertised price for some good or service. The valid range for the fraction is [0,1) and the value stored here is 1,000,000 * [fraction]." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/cpcBidMicros> ;
    sh:name "cpc bid micros" ;
    sh:description "The maximum CPC (cost-per-click) bid. This field is used when the ad group's effective bidding strategy is Manual CPC. This field is not applicable and will be ignored if the ad group's campaign is using a portfolio bidding strategy." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/cpmBidMicros> ;
    sh:name "cpm bid micros" ;
    sh:description "The maximum CPM (cost-per-thousand viewable impressions) bid." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/audienceSetting> ;
    sh:name "audience setting" ;
    sh:description "Immutable. Setting for audience related features." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AdGroupAudienceSettingShape ;
    sh:class googleads:AdGroupAudienceSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/effectiveTargetCpaMicros> ;
    sh:name "effective target cpa micros" ;
    sh:description "Output only. The effective target CPA (cost-per-acquisition). This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/effectiveTargetCpcSource> ;
    sh:name "effective target cpc source" ;
    sh:description "Output only. Source of the effective target CPC. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BIDDING_STRATEGY" "AD_GROUP" "AD_GROUP_CRITERION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/demandGenAdGroupSettings> ;
    sh:name "demand gen ad group settings" ;
    sh:description "Settings for Demand Gen ad groups." ;
    sh:node googleads:AdGroupDemandGenAdGroupSettingsShape ;
    sh:class googleads:AdGroupDemandGenAdGroupSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "The list of mappings used to substitute custom parameter tags in a `tracking_url_template`, `final_urls`, or `mobile_final_urls`." ;
    sh:node googleads:CustomParameterShape ;
    sh:class googleads:CustomParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign to which the ad group belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/effectiveTargetCpc> ;
    sh:name "effective target cpc" ;
    sh:description "Output only. The effective target CPC (cost-per-click). This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/verticalAdsFormatSetting> ;
    sh:name "vertical ads format setting" ;
    sh:description "Vertical ads setting feature to enable/disable ad group format controls in search campaigns. This setting requires AiMaxAdGroupSetting to be enabled and a travel feed to be attached to the campaign." ;
    sh:node googleads:AdGroupVerticalAdsFormatSettingShape ;
    sh:class googleads:AdGroupVerticalAdsFormatSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroup/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the ad group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Ai Max Ad Group Setting
googleads:AdGroupAiMaxAdGroupSettingShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAiMaxAdGroupSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAiMaxAdGroupSetting/disableSearchTermMatching> ;
    sh:name "disable search term matching" ;
    sh:description "Disable search term matching for this adgroup when AI Max is enabled. Search term matching uses broad match, asset-based, and landing page-based technology to improve reach." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Setting
googleads:TargetingSettingShape a sh:NodeShape ;
  sh:targetClass googleads:TargetingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetingSetting/targetRestrictions> ;
    sh:name "target restrictions" ;
    sh:description "The per-targeting-dimension setting to restrict the reach of your campaign or ad group." ;
    sh:node googleads:TargetRestrictionShape ;
    sh:class googleads:TargetRestriction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetingSetting/targetRestrictionOperations> ;
    sh:name "target restriction operations" ;
    sh:description "The list of operations changing the target restrictions. Adding a target restriction with a targeting dimension that already exists causes the existing target restriction to be replaced with the new value." ;
    sh:node googleads:TargetRestrictionOperationShape ;
    sh:class googleads:TargetRestrictionOperation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Target Restriction
googleads:TargetRestrictionShape a sh:NodeShape ;
  sh:targetClass googleads:TargetRestriction ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRestriction/targetingDimension> ;
    sh:name "targeting dimension" ;
    sh:description "The targeting dimension that these settings apply to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "AUDIENCE" "TOPIC" "GENDER" "AGE_RANGE" "PLACEMENT" "PARENTAL_STATUS" "INCOME_RANGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRestriction/bidOnly> ;
    sh:name "bid only" ;
    sh:description "Indicates whether to restrict your ads to show only for the criteria you have selected for this targeting_dimension, or to target all values for this targeting_dimension and show ads based on your targeting in other TargetingDimensions. A value of `true` means that these criteria will only apply bid modifiers, and not affect targeting. A value of `false` means that these criteria will restrict targeting as well as applying bid modifiers." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Restriction Operation
googleads:TargetRestrictionOperationShape a sh:NodeShape ;
  sh:targetClass googleads:TargetRestrictionOperation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRestrictionOperation/operator> ;
    sh:name "operator" ;
    sh:description "Type of list operation to perform." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADD" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRestrictionOperation/value> ;
    sh:name "value" ;
    sh:description "The target restriction being added to or removed from the list." ;
    sh:node googleads:TargetRestrictionShape ;
    sh:class googleads:TargetRestriction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Video Ad Group Settings
googleads:AdGroupVideoAdGroupSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupVideoAdGroupSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupVideoAdGroupSettings/videoAdSequence> ;
    sh:name "video ad sequence" ;
    sh:description "The video ads sequence step settings containing step ID." ;
    sh:node googleads:AdGroupVideoAdGroupSettingsVideoAdSequenceStepSettingShape ;
    sh:class googleads:AdGroupVideoAdGroupSettingsVideoAdSequenceStepSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Video Ad Group Settings Video Ad Sequence Step Setting
googleads:AdGroupVideoAdGroupSettingsVideoAdSequenceStepSettingShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupVideoAdGroupSettingsVideoAdSequenceStepSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupVideoAdGroupSettingsVideoAdSequenceStepSetting/stepId> ;
    sh:name "step id" ;
    sh:description "The ID of this sequence step from an existing `campaign.video_campaign_settings.video_ad_sequence` definition. Only one Ad Group can point to a given `step_id`." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Audience Setting
googleads:AdGroupAudienceSettingShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAudienceSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAudienceSetting/useAudienceGrouped> ;
    sh:name "use audience grouped" ;
    sh:description "Immutable. If true, this ad group uses an Audience resource for audience targeting. If false, this ad group may use audience segment criteria instead." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Demand Gen Ad Group Settings
googleads:AdGroupDemandGenAdGroupSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupDemandGenAdGroupSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettings/channelControls> ;
    sh:name "channel controls" ;
    sh:description "Channel controls for Demand Gen ad groups." ;
    sh:node googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsShape ;
    sh:class googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Demand Gen Ad Group Settings Demand Gen Channel Controls
googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControls ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControls/selectedChannels> ;
    sh:name "selected channels" ;
    sh:description "Explicitly selected channels. This field should be set with at least one true value when present." ;
    sh:node googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannelsShape ;
    sh:class googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControls/channelConfig> ;
    sh:name "channel config" ;
    sh:description "Output only. Channel configuration reflecting which field in the oneof is populated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CHANNEL_STRATEGY" "SELECTED_CHANNELS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControls/channelStrategy> ;
    sh:name "channel strategy" ;
    sh:description "High level channel strategy." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ALL_CHANNELS" "ALL_OWNED_AND_OPERATED_CHANNELS" ) ;
  ] .

# Shape for Ad Group Demand Gen Ad Group Settings Demand Gen Channel Controls Demand Gen Selected Channels
googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannelsShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels/youtubeInStream> ;
    sh:name "youtube in stream" ;
    sh:description "Whether to enable ads on the YouTube In-Stream channel." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels/gmail> ;
    sh:name "gmail" ;
    sh:description "Whether to enable ads on the Gmail channel." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels/youtubeInFeed> ;
    sh:name "youtube in feed" ;
    sh:description "Whether to enable ads on the YouTube In-Feed channel." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels/youtubeShorts> ;
    sh:name "youtube shorts" ;
    sh:description "Whether to enable ads on the YouTube Shorts channel." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels/discover> ;
    sh:name "discover" ;
    sh:description "Whether to enable ads on the Discover channel." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels/maps> ;
    sh:name "maps" ;
    sh:description "Whether to enable ads on the Maps channel." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupDemandGenAdGroupSettingsDemandGenChannelControlsDemandGenSelectedChannels/display> ;
    sh:name "display" ;
    sh:description "Whether to enable ads on the Display channel." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Vertical Ads Format Setting
googleads:AdGroupVerticalAdsFormatSettingShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupVerticalAdsFormatSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupVerticalAdsFormatSetting/enableVerticalPromotionAds> ;
    sh:name "enable vertical promotion ads" ;
    sh:description "If true, vertical promotion ads will be enabled for this ad group." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupVerticalAdsFormatSetting/disableTextAds> ;
    sh:name "disable text ads" ;
    sh:description "If true, text ads will be disabled for this ad group." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupVerticalAdsFormatSetting/enableBookingLinks> ;
    sh:name "enable booking links" ;
    sh:description "If true, booking links will be enabled for this ad group." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Ad
googleads:AdGroupAdShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/ad> ;
    sh:name "ad" ;
    sh:description "Immutable. The ad." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. Provides aggregated view into why an ad group ad is not serving or not serving optimally." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "LIMITED" "NOT_ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/adGroup> ;
    sh:name "ad group" ;
    sh:description "Immutable. The ad group to which the ad belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/adStrength> ;
    sh:name "ad strength" ;
    sh:description "Output only. Overall ad strength for this ad group ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "NO_ADS" "POOR" "AVERAGE" "GOOD" "EXCELLENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad. Ad group ad resource names have the form: `customers/{customer_id}/adGroupAds/{ad_group_id}~{ad_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/labels> ;
    sh:name "labels" ;
    sh:description "Output only. The resource names of labels attached to this ad group ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/startDateTime> ;
    sh:name "start date time" ;
    sh:description "The date and time when ad group ad starts serving. This is added on top of the campaign's start date and time, if present, to further restrict the duration of an ad group ad. The timestamp is in the customer's time zone and in \"yyyy-MM-dd HH:mm:ss\" format. Only supported for some ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/policySummary> ;
    sh:name "policy summary" ;
    sh:description "Output only. Policy information for the ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupAdPolicySummaryShape ;
    sh:class googleads:AdGroupAdPolicySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. Provides reasons for why an ad group ad is not serving or not serving optimally." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_REMOVED" "CAMPAIGN_PAUSED" "CAMPAIGN_PENDING" "CAMPAIGN_ENDED" "AD_GROUP_PAUSED" "AD_GROUP_REMOVED" "AD_GROUP_AD_PAUSED" "AD_GROUP_AD_REMOVED" "AD_GROUP_AD_DISAPPROVED" "AD_GROUP_AD_UNDER_REVIEW" "AD_GROUP_AD_POOR_QUALITY" "AD_GROUP_AD_NO_ADS" "AD_GROUP_AD_APPROVED_LABELED" "AD_GROUP_AD_AREA_OF_INTEREST_ONLY" "AD_GROUP_AD_UNDER_APPEAL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/endDateTime> ;
    sh:name "end date time" ;
    sh:description "The last day and time when ad group ad serves. This is added on top of the campaign's end date and time, if present, to further restrict the duration of an ad group ad. The timestamp is in the customer's time zone and in \"yyyy-MM-dd HH:mm:ss\" format. Only supported for some ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/adGroupAdAssetAutomationSettings> ;
    sh:name "ad group ad asset automation settings" ;
    sh:description "Settings that control the types of asset automation. See the AssetAutomationTypeEnum documentation for the default opt in/out behavior of each type." ;
    sh:node googleads:AdGroupAdAssetAutomationSettingShape ;
    sh:class googleads:AdGroupAdAssetAutomationSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/actionItems> ;
    sh:name "action items" ;
    sh:description "Output only. A list of recommendations to improve the ad strength. For example, a recommendation could be \"Try adding a few more unique headlines or unpinning some assets.\"." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "PAUSED" "REMOVED" ) ;
  ] .

# Shape for Ad Group Ad Policy Summary
googleads:AdGroupAdPolicySummaryShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAdPolicySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdPolicySummary/approvalStatus> ;
    sh:name "approval status" ;
    sh:description "Output only. The overall approval status of this ad, calculated based on the status of its individual policy topic entries." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISAPPROVED" "APPROVED_LIMITED" "APPROVED" "AREA_OF_INTEREST_ONLY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdPolicySummary/policyTopicEntries> ;
    sh:name "policy topic entries" ;
    sh:description "Output only. The list of policy findings for this ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:PolicyTopicEntryShape ;
    sh:class googleads:PolicyTopicEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdPolicySummary/reviewStatus> ;
    sh:name "review status" ;
    sh:description "Output only. Where in the review process this ad is." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REVIEW_IN_PROGRESS" "REVIEWED" "UNDER_APPEAL" "ELIGIBLE_MAY_SERVE" ) ;
  ] .

# Shape for Ad Group Ad Asset Automation Setting
googleads:AdGroupAdAssetAutomationSettingShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAdAssetAutomationSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetAutomationSetting/assetAutomationType> ;
    sh:name "asset automation type" ;
    sh:description "The asset automation type that this setting configures." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TEXT_ASSET_AUTOMATION" "GENERATE_VERTICAL_YOUTUBE_VIDEOS" "GENERATE_SHORTER_YOUTUBE_VIDEOS" "GENERATE_LANDING_PAGE_PREVIEW" "GENERATE_LANDING_PAGE_TEXT" "GENERATE_ENHANCED_YOUTUBE_VIDEOS" "GENERATE_IMAGE_ENHANCEMENT" "GENERATE_IMAGE_EXTRACTION" "GENERATE_DESIGN_VERSIONS_FOR_IMAGES" "FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION" "GENERATE_VIDEOS_FROM_OTHER_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetAutomationSetting/assetAutomationStatus> ;
    sh:name "asset automation status" ;
    sh:description "The opt-in/out status for the specified asset automation type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OPTED_IN" "OPTED_OUT" ) ;
  ] .

# Shape for Ad Group Ad Asset Combination View
googleads:AdGroupAdAssetCombinationViewShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAdAssetCombinationView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetCombinationView/enabled> ;
    sh:name "enabled" ;
    sh:description "Output only. The status between the asset combination and the latest version of the ad. If true, the asset combination is linked to the latest version of the ad. If false, it means the link once existed but has been removed and is no longer present in the latest version of the ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetCombinationView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the ad group ad asset combination view. The combination ID is 128 bits long, where the upper 64 bits are stored in asset_combination_id_high, and the lower 64 bits are stored in asset_combination_id_low. AdGroupAd Asset Combination view resource names have the form: `customers/{customer_id}/adGroupAdAssetCombinationViews/{AdGroupAd.ad_group_id}~{AdGroupAd.ad.ad_id}~{AssetCombination.asset_combination_id_low}~{AssetCombination.asset_combination_id_high}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetCombinationView/servedAssets> ;
    sh:name "served assets" ;
    sh:description "Output only. Served assets." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetUsageShape ;
    sh:class googleads:AssetUsage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Asset Usage
googleads:AssetUsageShape a sh:NodeShape ;
  sh:targetClass googleads:AssetUsage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetUsage/asset> ;
    sh:name "asset" ;
    sh:description "Resource name of the asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetUsage/servedAssetFieldType> ;
    sh:name "served asset field type" ;
    sh:description "The served field type of the asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE_1" "HEADLINE_2" "HEADLINE_3" "DESCRIPTION_1" "DESCRIPTION_2" "HEADLINE" "HEADLINE_IN_PORTRAIT" "LONG_HEADLINE" "DESCRIPTION" "DESCRIPTION_IN_PORTRAIT" "BUSINESS_NAME_IN_PORTRAIT" "BUSINESS_NAME" "MARKETING_IMAGE" "MARKETING_IMAGE_IN_PORTRAIT" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "CALL_TO_ACTION" "YOU_TUBE_VIDEO" "SITELINK" "CALL" "MOBILE_APP" "CALLOUT" "STRUCTURED_SNIPPET" "PRICE" "PROMOTION" "AD_IMAGE" "LEAD_FORM" "BUSINESS_LOGO" "DESCRIPTION_PREFIX" "HEADLINE_AS_SITELINK_POSITION_ONE" "HEADLINE_AS_SITELINK_POSITION_TWO" "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_ONE" "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_TWO" ) ;
  ] .

# Shape for Ad Group Ad Asset Policy Summary
googleads:AdGroupAdAssetPolicySummaryShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAdAssetPolicySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetPolicySummary/approvalStatus> ;
    sh:name "approval status" ;
    sh:description "Output only. The overall approval status of this ad group ad asset, calculated based on the status of its individual policy topic entries." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISAPPROVED" "APPROVED_LIMITED" "APPROVED" "AREA_OF_INTEREST_ONLY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetPolicySummary/policyTopicEntries> ;
    sh:name "policy topic entries" ;
    sh:description "Output only. The list of policy findings for the ad group ad asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:PolicyTopicEntryShape ;
    sh:class googleads:PolicyTopicEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetPolicySummary/reviewStatus> ;
    sh:name "review status" ;
    sh:description "Output only. Where in the review process this ad group ad asset is." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REVIEW_IN_PROGRESS" "REVIEWED" "UNDER_APPEAL" "ELIGIBLE_MAY_SERVE" ) ;
  ] .

# Shape for Ad Group Ad Asset View
googleads:AdGroupAdAssetViewShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAdAssetView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the ad group ad asset view. Ad group ad asset view resource names have the form (Before V4): `customers/{customer_id}/adGroupAdAssets/{AdGroupAdAsset.ad_group_id}~{AdGroupAdAsset.ad.ad_id}~{AdGroupAdAsset.asset_id}~{AdGroupAdAsset.field_type}` Ad group ad asset view resource names have the form (Beginning from V4): `customers/{customer_id}/adGroupAdAssetViews/{AdGroupAdAsset.ad_group_id}~{AdGroupAdAsset.ad_id}~{AdGroupAdAsset.asset_id}~{AdGroupAdAsset.field_type}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/fieldType> ;
    sh:name "field type" ;
    sh:description "Output only. Role that the asset takes in the ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/enabled> ;
    sh:name "enabled" ;
    sh:description "Output only. The status between the asset and the latest version of the ad. If true, the asset is linked to the latest version of the ad. If false, it means the link once existed but has been removed and is no longer present in the latest version of the ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/pinnedField> ;
    sh:name "pinned field" ;
    sh:description "Output only. Pinned field." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE_1" "HEADLINE_2" "HEADLINE_3" "DESCRIPTION_1" "DESCRIPTION_2" "HEADLINE" "HEADLINE_IN_PORTRAIT" "LONG_HEADLINE" "DESCRIPTION" "DESCRIPTION_IN_PORTRAIT" "BUSINESS_NAME_IN_PORTRAIT" "BUSINESS_NAME" "MARKETING_IMAGE" "MARKETING_IMAGE_IN_PORTRAIT" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "CALL_TO_ACTION" "YOU_TUBE_VIDEO" "SITELINK" "CALL" "MOBILE_APP" "CALLOUT" "STRUCTURED_SNIPPET" "PRICE" "PROMOTION" "AD_IMAGE" "LEAD_FORM" "BUSINESS_LOGO" "DESCRIPTION_PREFIX" "HEADLINE_AS_SITELINK_POSITION_ONE" "HEADLINE_AS_SITELINK_POSITION_TWO" "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_ONE" "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_TWO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/asset> ;
    sh:name "asset" ;
    sh:description "Output only. The asset which is linked to the ad group ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/performanceLabel> ;
    sh:name "performance label" ;
    sh:description "Output only. Performance of an asset linkage." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "LEARNING" "LOW" "GOOD" "BEST" "NOT_APPLICABLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/source> ;
    sh:name "source" ;
    sh:description "Output only. Source of the ad group ad asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/adGroupAd> ;
    sh:name "ad group ad" ;
    sh:description "Output only. The ad group ad to which the asset is linked." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdAssetView/policySummary> ;
    sh:name "policy summary" ;
    sh:description "Output only. Policy information for the ad group ad asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupAdAssetPolicySummaryShape ;
    sh:class googleads:AdGroupAdAssetPolicySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Ad Label
googleads:AdGroupAdLabelShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAdLabel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdLabel/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group ad label. Ad group ad label resource names have the form: `customers/{customer_id}/adGroupAdLabels/{ad_group_id}~{ad_id}~{label_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdLabel/adGroupAd> ;
    sh:name "ad group ad" ;
    sh:description "Immutable. The ad group ad to which the label is attached." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAdLabel/label> ;
    sh:name "label" ;
    sh:description "Immutable. The label assigned to the ad group ad." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Asset
googleads:AdGroupAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/asset> ;
    sh:name "asset" ;
    sh:description "Required. Immutable. The asset which is linked to the ad group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/source> ;
    sh:name "source" ;
    sh:description "Output only. Source of the adgroup asset link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. Provides the PrimaryStatus of this asset link. Primary status is meant essentially to differentiate between the plain \"status\" field, which has advertiser set values of enabled, paused, or removed. The primary status takes into account other signals (for assets its mainly policy and quality approvals) to come up with a more comprehensive status to indicate its serving state." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "LIMITED" "NOT_ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/primaryStatusDetails> ;
    sh:name "primary status details" ;
    sh:description "Output only. Provides the details of the primary status and its associated reasons." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetLinkPrimaryStatusDetailsShape ;
    sh:class googleads:AssetLinkPrimaryStatusDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. Provides a list of reasons for why an asset is not serving or not serving at full capacity." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ASSET_LINK_PAUSED" "ASSET_LINK_REMOVED" "ASSET_DISAPPROVED" "ASSET_UNDER_REVIEW" "ASSET_APPROVED_LABELED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/adGroup> ;
    sh:name "ad group" ;
    sh:description "Required. Immutable. The ad group to which the asset is linked." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group asset. AdGroupAsset resource names have the form: `customers/{customer_id}/adGroupAssets/{ad_group_id}~{asset_id}~{field_type}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/fieldType> ;
    sh:name "field type" ;
    sh:description "Required. Immutable. Role that the asset takes under the linked ad group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAsset/status> ;
    sh:name "status" ;
    sh:description "Status of the ad group asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "PAUSED" ) ;
  ] .

# Shape for Asset Link Primary Status Details
googleads:AssetLinkPrimaryStatusDetailsShape a sh:NodeShape ;
  sh:targetClass googleads:AssetLinkPrimaryStatusDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetLinkPrimaryStatusDetails/assetDisapproved> ;
    sh:name "asset disapproved" ;
    sh:description "Provides the details for AssetLinkPrimaryStatusReason.ASSET_DISAPPROVED" ;
    sh:node googleads:AssetDisapprovedShape ;
    sh:class googleads:AssetDisapproved ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetLinkPrimaryStatusDetails/status> ;
    sh:name "status" ;
    sh:description "Provides the PrimaryStatus of this status detail." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "LIMITED" "NOT_ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetLinkPrimaryStatusDetails/reason> ;
    sh:name "reason" ;
    sh:description "Provides the reason of this PrimaryStatus." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ASSET_LINK_PAUSED" "ASSET_LINK_REMOVED" "ASSET_DISAPPROVED" "ASSET_UNDER_REVIEW" "ASSET_APPROVED_LABELED" ) ;
  ] .

# Shape for Asset Disapproved
googleads:AssetDisapprovedShape a sh:NodeShape ;
  sh:targetClass googleads:AssetDisapproved ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetDisapproved/offlineEvaluationErrorReasons> ;
    sh:name "offline evaluation error reasons" ;
    sh:description "Provides the quality evaluation disapproval reason of an asset." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PRICE_ASSET_DESCRIPTION_REPEATS_ROW_HEADER" "PRICE_ASSET_REPETITIVE_HEADERS" "PRICE_ASSET_HEADER_INCOMPATIBLE_WITH_PRICE_TYPE" "PRICE_ASSET_DESCRIPTION_INCOMPATIBLE_WITH_ITEM_HEADER" "PRICE_ASSET_DESCRIPTION_HAS_PRICE_QUALIFIER" "PRICE_ASSET_UNSUPPORTED_LANGUAGE" "PRICE_ASSET_OTHER_ERROR" ) ;
  ] .

# Shape for Ad Group Asset Set
googleads:AdGroupAssetSetShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAssetSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAssetSet/adGroup> ;
    sh:name "ad group" ;
    sh:description "Immutable. The ad group to which this asset set is linked." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAssetSet/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group asset set. Ad group asset set resource names have the form: `customers/{customer_id}/adGroupAssetSets/{ad_group_id}~{asset_set_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAssetSet/assetSet> ;
    sh:name "asset set" ;
    sh:description "Immutable. The asset set which is linked to the ad group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAssetSet/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the ad group asset set. Read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] .

# Shape for Ad Group Audience View
googleads:AdGroupAudienceViewShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupAudienceView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupAudienceView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the ad group audience view. Ad group audience view resource names have the form: `customers/{customer_id}/adGroupAudienceViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Bid Modifier
googleads:AdGroupBidModifierShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupBidModifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/hotelLengthOfStay> ;
    sh:name "hotel length of stay" ;
    sh:description "Immutable. Criterion for length of hotel stay in nights." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:HotelLengthOfStayInfoShape ;
    sh:class googleads:HotelLengthOfStayInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/bidModifierSource> ;
    sh:name "bid modifier source" ;
    sh:description "Output only. Bid modifier source." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN" "AD_GROUP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/hotelAdvanceBookingWindow> ;
    sh:name "hotel advance booking window" ;
    sh:description "Immutable. Criterion for number of days prior to the stay the booking is being made." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:HotelAdvanceBookingWindowInfoShape ;
    sh:class googleads:HotelAdvanceBookingWindowInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/hotelCheckInDay> ;
    sh:name "hotel check in day" ;
    sh:description "Immutable. Criterion for day of the week the booking is for." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:HotelCheckInDayInfoShape ;
    sh:class googleads:HotelCheckInDayInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/device> ;
    sh:name "device" ;
    sh:description "Immutable. A device criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:DeviceInfoShape ;
    sh:class googleads:DeviceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/hotelDateSelectionType> ;
    sh:name "hotel date selection type" ;
    sh:description "Immutable. Criterion for hotel date selection (default dates versus user selected)." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:HotelDateSelectionTypeInfoShape ;
    sh:class googleads:HotelDateSelectionTypeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/hotelCheckInDateRange> ;
    sh:name "hotel check in date range" ;
    sh:description "Immutable. Criterion for a hotel check-in date range." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:HotelCheckInDateRangeInfoShape ;
    sh:class googleads:HotelCheckInDateRangeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group bid modifier. Ad group bid modifier resource names have the form: `customers/{customer_id}/adGroupBidModifiers/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/criterionId> ;
    sh:name "criterion id" ;
    sh:description "Output only. The ID of the criterion to bid modify. This field is ignored for mutates." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/bidModifier> ;
    sh:name "bid modifier" ;
    sh:description "The modifier for the bid when the criterion matches. The modifier must be in the range: 0.1 - 10.0. Use 0 to opt out of a Device type." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/adGroup> ;
    sh:name "ad group" ;
    sh:description "Immutable. The ad group to which this criterion belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupBidModifier/baseAdGroup> ;
    sh:name "base ad group" ;
    sh:description "Output only. The base ad group from which this draft/trial adgroup bid modifier was created. If ad_group is a base ad group then this field will be equal to ad_group. If the ad group was created in the draft or trial and has no corresponding base ad group, then this field will be null. This field is readonly." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Length Of Stay Info
googleads:HotelLengthOfStayInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelLengthOfStayInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelLengthOfStayInfo/minNights> ;
    sh:name "min nights" ;
    sh:description "Low end of the number of nights in the stay." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelLengthOfStayInfo/maxNights> ;
    sh:name "max nights" ;
    sh:description "High end of the number of nights in the stay." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Advance Booking Window Info
googleads:HotelAdvanceBookingWindowInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelAdvanceBookingWindowInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelAdvanceBookingWindowInfo/minDays> ;
    sh:name "min days" ;
    sh:description "Low end of the number of days prior to the stay." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelAdvanceBookingWindowInfo/maxDays> ;
    sh:name "max days" ;
    sh:description "High end of the number of days prior to the stay." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Check In Day Info
googleads:HotelCheckInDayInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelCheckInDayInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCheckInDayInfo/dayOfWeek> ;
    sh:name "day of week" ;
    sh:description "The day of the week." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY" ) ;
  ] .

# Shape for Device Info
googleads:DeviceInfoShape a sh:NodeShape ;
  sh:targetClass googleads:DeviceInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DeviceInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the device." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MOBILE" "TABLET" "DESKTOP" "CONNECTED_TV" "OTHER" ) ;
  ] .

# Shape for Hotel Date Selection Type Info
googleads:HotelDateSelectionTypeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelDateSelectionTypeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelDateSelectionTypeInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the hotel date selection" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT_SELECTION" "USER_SELECTED" ) ;
  ] .

# Shape for Hotel Check In Date Range Info
googleads:HotelCheckInDateRangeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelCheckInDateRangeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCheckInDateRangeInfo/startDate> ;
    sh:name "start date" ;
    sh:description "Start date in the YYYY-MM-DD format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCheckInDateRangeInfo/endDate> ;
    sh:name "end date" ;
    sh:description "End date in the YYYY-MM-DD format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Creative Asset Combination Data
googleads:AdGroupCreativeAssetCombinationDataShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCreativeAssetCombinationData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCreativeAssetCombinationData/assetCombinationServedAssets> ;
    sh:name "asset combination served assets" ;
    sh:description "Output only. Served assets." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetUsageShape ;
    sh:class googleads:AssetUsage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Group Criterion
googleads:AdGroupCriterionShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/language> ;
    sh:name "language" ;
    sh:description "Immutable. Language." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LanguageInfoShape ;
    sh:class googleads:LanguageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/cpvBidMicros> ;
    sh:name "cpv bid micros" ;
    sh:description "The CPV (cost-per-view) bid." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/brandList> ;
    sh:name "brand list" ;
    sh:description "Immutable. Brand list criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:BrandListInfoShape ;
    sh:class googleads:BrandListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/topic> ;
    sh:name "topic" ;
    sh:description "Immutable. Topic." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:TopicInfoShape ;
    sh:class googleads:TopicInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/mobileAppCategory> ;
    sh:name "mobile app category" ;
    sh:description "Immutable. Mobile app category." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileAppCategoryInfoShape ;
    sh:class googleads:MobileAppCategoryInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/cpcBidMicros> ;
    sh:name "cpc bid micros" ;
    sh:description "The CPC (cost-per-click) bid." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. The display name of the criterion. This field is ignored for mutates." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/adGroup> ;
    sh:name "ad group" ;
    sh:description "Immutable. The ad group to which the criterion belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group criterion. Ad group criterion resource names have the form: `customers/{customer_id}/adGroupCriteria/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/cpmBidMicros> ;
    sh:name "cpm bid micros" ;
    sh:description "The CPM (cost-per-thousand viewable impressions) bid." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/ageRange> ;
    sh:name "age range" ;
    sh:description "Immutable. Age range." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AgeRangeInfoShape ;
    sh:class googleads:AgeRangeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/qualityInfo> ;
    sh:name "quality info" ;
    sh:description "Output only. Information regarding the quality of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupCriterionQualityInfoShape ;
    sh:class googleads:AdGroupCriterionQualityInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/keyword> ;
    sh:name "keyword" ;
    sh:description "Immutable. Keyword." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/extendedDemographic> ;
    sh:name "extended demographic" ;
    sh:description "Immutable. Extended demographic criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ExtendedDemographicInfoShape ;
    sh:class googleads:ExtendedDemographicInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/listingGroup> ;
    sh:name "listing group" ;
    sh:description "Immutable. Listing group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ListingGroupInfoShape ;
    sh:class googleads:ListingGroupInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectiveCpvBidSource> ;
    sh:name "effective cpv bid source" ;
    sh:description "Output only. Source of the effective CPV bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BIDDING_STRATEGY" "AD_GROUP" "AD_GROUP_CRITERION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The URL template for constructing a tracking URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectivePercentCpcBidSource> ;
    sh:name "effective percent cpc bid source" ;
    sh:description "Output only. Source of the effective Percent CPC bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BIDDING_STRATEGY" "AD_GROUP" "AD_GROUP_CRITERION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/labels> ;
    sh:name "labels" ;
    sh:description "Output only. The resource names of labels attached to this ad group criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/disapprovalReasons> ;
    sh:name "disapproval reasons" ;
    sh:description "Output only. List of disapproval reasons of the criterion. The different reasons for disapproving a criterion can be found here: https://support.google.com/adspolicy/answer/6008942 This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/mobileApplication> ;
    sh:name "mobile application" ;
    sh:description "Immutable. Mobile application." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileApplicationInfoShape ;
    sh:class googleads:MobileApplicationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The list of possible final mobile URLs after all cross-domain redirects." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/userList> ;
    sh:name "user list" ;
    sh:description "Immutable. User List." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:UserListInfoShape ;
    sh:class googleads:UserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectiveCpcBidSource> ;
    sh:name "effective cpc bid source" ;
    sh:description "Output only. Source of the effective CPC bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BIDDING_STRATEGY" "AD_GROUP" "AD_GROUP_CRITERION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. The primary status reasons for the ad group criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_PENDING" "CAMPAIGN_CRITERION_NEGATIVE" "CAMPAIGN_PAUSED" "CAMPAIGN_REMOVED" "CAMPAIGN_ENDED" "AD_GROUP_PAUSED" "AD_GROUP_REMOVED" "AD_GROUP_CRITERION_DISAPPROVED" "AD_GROUP_CRITERION_RARELY_SERVED" "AD_GROUP_CRITERION_LOW_QUALITY" "AD_GROUP_CRITERION_UNDER_REVIEW" "AD_GROUP_CRITERION_PENDING_REVIEW" "AD_GROUP_CRITERION_BELOW_FIRST_PAGE_BID" "AD_GROUP_CRITERION_NEGATIVE" "AD_GROUP_CRITERION_RESTRICTED" "AD_GROUP_CRITERION_PAUSED" "AD_GROUP_CRITERION_PAUSED_DUE_TO_LOW_ACTIVITY" "AD_GROUP_CRITERION_REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/appPaymentModel> ;
    sh:name "app payment model" ;
    sh:description "Immutable. App Payment Model." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AppPaymentModelInfoShape ;
    sh:class googleads:AppPaymentModelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/customIntent> ;
    sh:name "custom intent" ;
    sh:description "Immutable. Custom Intent." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CustomIntentInfoShape ;
    sh:class googleads:CustomIntentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/customAudience> ;
    sh:name "custom audience" ;
    sh:description "Immutable. Custom Audience." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CustomAudienceInfoShape ;
    sh:class googleads:CustomAudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/status> ;
    sh:name "status" ;
    sh:description "The status of the criterion. This is the status of the ad group criterion entity, set by the client. Note: UI reports may incorporate additional information that affects whether a criterion is eligible to run. In some cases a criterion that's REMOVED in the API can still show as enabled in the UI. For example, campaigns by default show to users of all age ranges unless excluded. The UI will show each age range as \"enabled\", since they're eligible to see the ads; but AdGroupCriterion.status will show \"removed\", since no positive criterion was added." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "PAUSED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectiveCpmBidSource> ;
    sh:name "effective cpm bid source" ;
    sh:description "Output only. Source of the effective CPM bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BIDDING_STRATEGY" "AD_GROUP" "AD_GROUP_CRITERION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectiveCpvBidMicros> ;
    sh:name "effective cpv bid micros" ;
    sh:description "Output only. The effective CPV (cost-per-view) bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/youtubeChannel> ;
    sh:name "youtube channel" ;
    sh:description "Immutable. YouTube Channel." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeChannelInfoShape ;
    sh:class googleads:YouTubeChannelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/webpage> ;
    sh:name "webpage" ;
    sh:description "Immutable. Webpage" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:WebpageInfoShape ;
    sh:class googleads:WebpageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/criterionId> ;
    sh:name "criterion id" ;
    sh:description "Output only. The ID of the criterion. This field is ignored for mutates." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/percentCpcBidMicros> ;
    sh:name "percent cpc bid micros" ;
    sh:description "The CPC bid amount, expressed as a fraction of the advertised price for some good or service. The valid range for the fraction is [0,1) and the value stored here is 1,000,000 * [fraction]." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/systemServingStatus> ;
    sh:name "system serving status" ;
    sh:description "Output only. Serving status of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "RARELY_SERVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/youtubeVideo> ;
    sh:name "youtube video" ;
    sh:description "Immutable. YouTube Video." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeVideoInfoShape ;
    sh:class googleads:YouTubeVideoInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/approvalStatus> ;
    sh:name "approval status" ;
    sh:description "Output only. Approval status of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPROVED" "DISAPPROVED" "PENDING_REVIEW" "UNDER_REVIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/audience> ;
    sh:name "audience" ;
    sh:description "Immutable. Audience." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AudienceInfoShape ;
    sh:class googleads:AudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/negative> ;
    sh:name "negative" ;
    sh:description "Immutable. Whether to target (`false`) or exclude (`true`) the criterion. This field is immutable. To switch a criterion from positive to negative, remove then re-add it." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/gender> ;
    sh:name "gender" ;
    sh:description "Immutable. Gender." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:GenderInfoShape ;
    sh:class googleads:GenderInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/incomeRange> ;
    sh:name "income range" ;
    sh:description "Immutable. Income range." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:IncomeRangeInfoShape ;
    sh:class googleads:IncomeRangeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "The list of mappings used to substitute custom parameter tags in a `tracking_url_template`, `final_urls`, or `mobile_final_urls`." ;
    sh:node googleads:CustomParameterShape ;
    sh:class googleads:CustomParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/combinedAudience> ;
    sh:name "combined audience" ;
    sh:description "Immutable. Combined Audience." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CombinedAudienceInfoShape ;
    sh:class googleads:CombinedAudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/bidModifier> ;
    sh:name "bid modifier" ;
    sh:description "The modifier for the bid when the criterion matches. The modifier must be in the range: 0.1 - 10.0. Most targetable criteria types support modifiers." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "URL template for appending params to final URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/lifeEvent> ;
    sh:name "life event" ;
    sh:description "Immutable. Life event campaign criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LifeEventInfoShape ;
    sh:class googleads:LifeEventInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. The primary status for the ad group criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "NOT_ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/placement> ;
    sh:name "placement" ;
    sh:description "Immutable. Placement." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:PlacementInfoShape ;
    sh:class googleads:PlacementInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/parentalStatus> ;
    sh:name "parental status" ;
    sh:description "Immutable. Parental status." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ParentalStatusInfoShape ;
    sh:class googleads:ParentalStatusInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/retailFilterBundle> ;
    sh:name "retail filter bundle" ;
    sh:description "Immutable. Retail Filter Bundle." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:RetailFilterBundleShape ;
    sh:class googleads:RetailFilterBundle ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/userInterest> ;
    sh:name "user interest" ;
    sh:description "Immutable. User Interest." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:UserInterestInfoShape ;
    sh:class googleads:UserInterestInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/positionEstimates> ;
    sh:name "position estimates" ;
    sh:description "Output only. Estimates for criterion bids at various positions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupCriterionPositionEstimatesShape ;
    sh:class googleads:AdGroupCriterionPositionEstimates ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/location> ;
    sh:name "location" ;
    sh:description "Immutable. Location." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LocationInfoShape ;
    sh:class googleads:LocationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectivePercentCpcBidMicros> ;
    sh:name "effective percent cpc bid micros" ;
    sh:description "Output only. The effective Percent CPC bid amount." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The list of possible final URLs after all cross-domain redirects for the ad." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectiveCpmBidMicros> ;
    sh:name "effective cpm bid micros" ;
    sh:description "Output only. The effective CPM (cost-per-thousand viewable impressions) bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/customAffinity> ;
    sh:name "custom affinity" ;
    sh:description "Immutable. Custom Affinity." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CustomAffinityInfoShape ;
    sh:class googleads:CustomAffinityInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/verticalAdsItemGroupRuleList> ;
    sh:name "vertical ads item group rule list" ;
    sh:description "Immutable. Vertical ads item group rule list criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:VerticalAdsItemGroupRuleListInfoShape ;
    sh:class googleads:VerticalAdsItemGroupRuleListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/videoLineup> ;
    sh:name "video lineup" ;
    sh:description "Immutable. Video lineup criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:VideoLineupInfoShape ;
    sh:class googleads:VideoLineupInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/effectiveCpcBidMicros> ;
    sh:name "effective cpc bid micros" ;
    sh:description "Output only. The effective CPC (cost-per-click) bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterion/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "PLACEMENT" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "DEVICE" "LOCATION" "LISTING_GROUP" "AD_SCHEDULE" "AGE_RANGE" "GENDER" "INCOME_RANGE" "PARENTAL_STATUS" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "USER_LIST" "PROXIMITY" "TOPIC" "LISTING_SCOPE" "LANGUAGE" "IP_BLOCK" "CONTENT_LABEL" "CARRIER" "USER_INTEREST" "WEBPAGE" "OPERATING_SYSTEM_VERSION" "APP_PAYMENT_MODEL" "MOBILE_DEVICE" "CUSTOM_AFFINITY" "CUSTOM_INTENT" "LOCATION_GROUP" "CUSTOM_AUDIENCE" "COMBINED_AUDIENCE" "KEYWORD_THEME" "AUDIENCE" "NEGATIVE_KEYWORD_LIST" "LOCAL_SERVICE_ID" "SEARCH_THEME" "BRAND" "BRAND_LIST" "LIFE_EVENT" "WEBPAGE_LIST" "VIDEO_LINEUP" "PLACEMENT_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE" "RETAIL_FILTER_BUNDLE" "RETAIL_FILTER" ) ;
  ] .

# Shape for Language Info
googleads:LanguageInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LanguageInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LanguageInfo/languageConstant> ;
    sh:name "language constant" ;
    sh:description "The language constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Brand List Info
googleads:BrandListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:BrandListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BrandListInfo/sharedSet> ;
    sh:name "shared set" ;
    sh:description "Shared set resource name of the brand list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Topic Info
googleads:TopicInfoShape a sh:NodeShape ;
  sh:targetClass googleads:TopicInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TopicInfo/topicConstant> ;
    sh:name "topic constant" ;
    sh:description "The Topic Constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TopicInfo/path> ;
    sh:name "path" ;
    sh:description "The category to target or exclude. Each subsequent element in the array describes a more specific sub-category. For example, \"Pets & Animals\", \"Pets\", \"Dogs\" represents the \"Pets & Animals/Pets/Dogs\" category." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Mobile App Category Info
googleads:MobileAppCategoryInfoShape a sh:NodeShape ;
  sh:targetClass googleads:MobileAppCategoryInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppCategoryInfo/mobileAppCategoryConstant> ;
    sh:name "mobile app category constant" ;
    sh:description "The mobile app category constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Age Range Info
googleads:AgeRangeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AgeRangeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AgeRangeInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the age range." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AGE_RANGE_18_24" "AGE_RANGE_25_34" "AGE_RANGE_35_44" "AGE_RANGE_45_54" "AGE_RANGE_55_64" "AGE_RANGE_65_UP" "AGE_RANGE_UNDETERMINED" ) ;
  ] .

# Shape for Ad Group Criterion Quality Info
googleads:AdGroupCriterionQualityInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCriterionQualityInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionQualityInfo/creativeQualityScore> ;
    sh:name "creative quality score" ;
    sh:description "Output only. The performance of the ad compared to other advertisers." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BELOW_AVERAGE" "AVERAGE" "ABOVE_AVERAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionQualityInfo/searchPredictedCtr> ;
    sh:name "search predicted ctr" ;
    sh:description "Output only. The click-through rate compared to that of other advertisers." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BELOW_AVERAGE" "AVERAGE" "ABOVE_AVERAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionQualityInfo/qualityScore> ;
    sh:name "quality score" ;
    sh:description "Output only. The quality score. This field may not be populated if Google does not have enough information to determine a value." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionQualityInfo/postClickQualityScore> ;
    sh:name "post click quality score" ;
    sh:description "Output only. The quality score of the landing page." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BELOW_AVERAGE" "AVERAGE" "ABOVE_AVERAGE" ) ;
  ] .

# Shape for Keyword Info
googleads:KeywordInfoShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordInfo/matchType> ;
    sh:name "match type" ;
    sh:description "The match type of the keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXACT" "PHRASE" "BROAD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordInfo/text> ;
    sh:name "text" ;
    sh:description "The text of the keyword (at most 80 characters and 10 words)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Extended Demographic Info
googleads:ExtendedDemographicInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExtendedDemographicInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExtendedDemographicInfo/extendedDemographicId> ;
    sh:name "extended demographic id" ;
    sh:description "Taxonomy id of the extended demographic group." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Group Info
googleads:ListingGroupInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the listing group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SUBDIVISION" "UNIT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupInfo/caseValue> ;
    sh:name "case value" ;
    sh:description "Dimension value with which this listing group is refining its parent. Undefined for the root group." ;
    sh:node googleads:ListingDimensionInfoShape ;
    sh:class googleads:ListingDimensionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupInfo/parentAdGroupCriterion> ;
    sh:name "parent ad group criterion" ;
    sh:description "Resource name of ad group criterion which is the parent listing group subdivision. Null for the root group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupInfo/path> ;
    sh:name "path" ;
    sh:description "The path of dimensions defining this listing group." ;
    sh:node googleads:ListingDimensionPathShape ;
    sh:class googleads:ListingDimensionPath ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Dimension Info
googleads:ListingDimensionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ListingDimensionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productChannel> ;
    sh:name "product channel" ;
    sh:description "Locality of a product offer." ;
    sh:node googleads:ProductChannelInfoShape ;
    sh:class googleads:ProductChannelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/unknownListingDimension> ;
    sh:name "unknown listing dimension" ;
    sh:description "Unknown dimension. Set when no other listing dimension is set." ;
    sh:node googleads:UnknownListingDimensionInfoShape ;
    sh:class googleads:UnknownListingDimensionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/activityId> ;
    sh:name "activity id" ;
    sh:description "Advertiser-specific activity ID." ;
    sh:node googleads:ActivityIdInfoShape ;
    sh:class googleads:ActivityIdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/hotelId> ;
    sh:name "hotel id" ;
    sh:description "Advertiser-specific hotel ID." ;
    sh:node googleads:HotelIdInfoShape ;
    sh:class googleads:HotelIdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productCategory> ;
    sh:name "product category" ;
    sh:description "Category of a product offer." ;
    sh:node googleads:ProductCategoryInfoShape ;
    sh:class googleads:ProductCategoryInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/activityCountry> ;
    sh:name "activity country" ;
    sh:description "The country where the travel activity is available." ;
    sh:node googleads:ActivityCountryInfoShape ;
    sh:class googleads:ActivityCountryInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productLegacyCondition> ;
    sh:name "product legacy condition" ;
    sh:description "Legacy condition of a product offer. This listing dimension is deprecated and it is supported only in Display campaigns." ;
    sh:node googleads:ProductLegacyConditionInfoShape ;
    sh:class googleads:ProductLegacyConditionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/hotelState> ;
    sh:name "hotel state" ;
    sh:description "State the hotel is located in." ;
    sh:node googleads:HotelStateInfoShape ;
    sh:class googleads:HotelStateInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productLabels> ;
    sh:name "product labels" ;
    sh:description "Labels of a product offer. This listing dimension is deprecated and it is supported only in Display campaigns." ;
    sh:node googleads:ProductLabelsInfoShape ;
    sh:class googleads:ProductLabelsInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productItemId> ;
    sh:name "product item id" ;
    sh:description "Item id of a product offer." ;
    sh:node googleads:ProductItemIdInfoShape ;
    sh:class googleads:ProductItemIdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/hotelClass> ;
    sh:name "hotel class" ;
    sh:description "Class of the hotel as a number of stars 1 to 5." ;
    sh:node googleads:HotelClassInfoShape ;
    sh:class googleads:HotelClassInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productCondition> ;
    sh:name "product condition" ;
    sh:description "Condition of a product offer." ;
    sh:node googleads:ProductConditionInfoShape ;
    sh:class googleads:ProductConditionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productChannelExclusivity> ;
    sh:name "product channel exclusivity" ;
    sh:description "Availability of a product offer." ;
    sh:node googleads:ProductChannelExclusivityInfoShape ;
    sh:class googleads:ProductChannelExclusivityInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/activityState> ;
    sh:name "activity state" ;
    sh:description "The state where the travel activity is available." ;
    sh:node googleads:ActivityStateInfoShape ;
    sh:class googleads:ActivityStateInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productType> ;
    sh:name "product type" ;
    sh:description "Type of a product offer." ;
    sh:node googleads:ProductTypeInfoShape ;
    sh:class googleads:ProductTypeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/activityCity> ;
    sh:name "activity city" ;
    sh:description "The city where the travel activity is available." ;
    sh:node googleads:ActivityCityInfoShape ;
    sh:class googleads:ActivityCityInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productBrand> ;
    sh:name "product brand" ;
    sh:description "Brand of a product offer." ;
    sh:node googleads:ProductBrandInfoShape ;
    sh:class googleads:ProductBrandInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productGrouping> ;
    sh:name "product grouping" ;
    sh:description "Grouping of a product offer. This listing dimension is deprecated and it is supported only in Display campaigns." ;
    sh:node googleads:ProductGroupingInfoShape ;
    sh:class googleads:ProductGroupingInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/hotelCountryRegion> ;
    sh:name "hotel country region" ;
    sh:description "Country or Region the hotel is located in." ;
    sh:node googleads:HotelCountryRegionInfoShape ;
    sh:class googleads:HotelCountryRegionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/hotelCity> ;
    sh:name "hotel city" ;
    sh:description "City the hotel is located in." ;
    sh:node googleads:HotelCityInfoShape ;
    sh:class googleads:HotelCityInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productCustomAttribute> ;
    sh:name "product custom attribute" ;
    sh:description "Custom attribute of a product offer." ;
    sh:node googleads:ProductCustomAttributeInfoShape ;
    sh:class googleads:ProductCustomAttributeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/activityRating> ;
    sh:name "activity rating" ;
    sh:description "Rating of the activity as a number 1 to 5, where 5 is the best." ;
    sh:node googleads:ActivityRatingInfoShape ;
    sh:class googleads:ActivityRatingInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionInfo/productTypeFull> ;
    sh:name "product type full" ;
    sh:description "Full type of a product offer. This listing dimension is deprecated and it is supported only in Display campaigns." ;
    sh:node googleads:ProductTypeFullInfoShape ;
    sh:class googleads:ProductTypeFullInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Channel Info
googleads:ProductChannelInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductChannelInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductChannelInfo/channel> ;
    sh:name "channel" ;
    sh:description "Value of the locality." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ONLINE" "LOCAL" ) ;
  ] .

# Shape for Unknown Listing Dimension Info
googleads:UnknownListingDimensionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UnknownListingDimensionInfo .

# Shape for Hotel Id Info
googleads:HotelIdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelIdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelIdInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the hotel ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Category Info
googleads:ProductCategoryInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductCategoryInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryInfo/categoryId> ;
    sh:name "category id" ;
    sh:description "ID of the product category. This ID is equivalent to the google_product_category ID as described in this article: https://support.google.com/merchants/answer/6324436" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryInfo/level> ;
    sh:name "level" ;
    sh:description "Level of the product category." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LEVEL1" "LEVEL2" "LEVEL3" "LEVEL4" "LEVEL5" ) ;
  ] .

# Shape for Product Legacy Condition Info
googleads:ProductLegacyConditionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductLegacyConditionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLegacyConditionInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the product legacy condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel State Info
googleads:HotelStateInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelStateInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelStateInfo/stateCriterion> ;
    sh:name "state criterion" ;
    sh:description "The Geo Target Constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Labels Info
googleads:ProductLabelsInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductLabelsInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLabelsInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the product labels." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Item Id Info
googleads:ProductItemIdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductItemIdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductItemIdInfo/value> ;
    sh:name "value" ;
    sh:description "Value of the id." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Class Info
googleads:HotelClassInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelClassInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelClassInfo/value> ;
    sh:name "value" ;
    sh:description "Long value of the hotel class." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Condition Info
googleads:ProductConditionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductConditionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductConditionInfo/condition> ;
    sh:name "condition" ;
    sh:description "Value of the condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW" "REFURBISHED" "USED" ) ;
  ] .

# Shape for Product Channel Exclusivity Info
googleads:ProductChannelExclusivityInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductChannelExclusivityInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductChannelExclusivityInfo/channelExclusivity> ;
    sh:name "channel exclusivity" ;
    sh:description "Value of the availability." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SINGLE_CHANNEL" "MULTI_CHANNEL" ) ;
  ] .

# Shape for Product Type Info
googleads:ProductTypeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductTypeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductTypeInfo/value> ;
    sh:name "value" ;
    sh:description "Value of the type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductTypeInfo/level> ;
    sh:name "level" ;
    sh:description "Level of the type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LEVEL1" "LEVEL2" "LEVEL3" "LEVEL4" "LEVEL5" ) ;
  ] .

# Shape for Product Brand Info
googleads:ProductBrandInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductBrandInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductBrandInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the product brand." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Grouping Info
googleads:ProductGroupingInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductGroupingInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductGroupingInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the product grouping." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Country Region Info
googleads:HotelCountryRegionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelCountryRegionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCountryRegionInfo/countryRegionCriterion> ;
    sh:name "country region criterion" ;
    sh:description "The Geo Target Constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel City Info
googleads:HotelCityInfoShape a sh:NodeShape ;
  sh:targetClass googleads:HotelCityInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCityInfo/cityCriterion> ;
    sh:name "city criterion" ;
    sh:description "The Geo Target Constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Custom Attribute Info
googleads:ProductCustomAttributeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductCustomAttributeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCustomAttributeInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the product custom attribute." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCustomAttributeInfo/index> ;
    sh:name "index" ;
    sh:description "Indicates the index of the custom attribute." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INDEX0" "INDEX1" "INDEX2" "INDEX3" "INDEX4" ) ;
  ] .

# Shape for Product Type Full Info
googleads:ProductTypeFullInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProductTypeFullInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductTypeFullInfo/value> ;
    sh:name "value" ;
    sh:description "String value of the product full type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Dimension Path
googleads:ListingDimensionPathShape a sh:NodeShape ;
  sh:targetClass googleads:ListingDimensionPath ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingDimensionPath/dimensions> ;
    sh:name "dimensions" ;
    sh:description "The complete path of dimensions through the listing group hierarchy, from the root (excluding the root itself) to this listing group." ;
    sh:node googleads:ListingDimensionInfoShape ;
    sh:class googleads:ListingDimensionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Mobile Application Info
googleads:MobileApplicationInfoShape a sh:NodeShape ;
  sh:targetClass googleads:MobileApplicationInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileApplicationInfo/appId> ;
    sh:name "app id" ;
    sh:description "A string that uniquely identifies a mobile application to Google Ads API. The format of this string is \"{platform}-{platform_native_id}\", where platform is \"1\" for iOS apps and \"2\" for Android apps, and where platform_native_id is the mobile application identifier native to the corresponding platform. For iOS, this native identifier is the 9 digit string that appears at the end of an App Store URL (for example, \"476943146\" for \"Flood-It! 2\" whose App Store link is \"http://itunes.apple.com/us/app/flood-it!-2/id476943146\"). For Android, this native identifier is the application's package name (for example, \"com.labpixies.colordrips\" for \"Color Drips\" given Google Play link \"https://play.google.com/store/apps/details?id=com.labpixies.colordrips\"). A well formed app id for Google Ads API would thus be \"1-476943146\" for iOS and \"2-com.labpixies.colordrips\" for Android. This field is required and must be set in CREATE operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileApplicationInfo/name> ;
    sh:name "name" ;
    sh:description "Name of this mobile application." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for User List Info
googleads:UserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListInfo/userList> ;
    sh:name "user list" ;
    sh:description "The User List resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for App Payment Model Info
googleads:AppPaymentModelInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AppPaymentModelInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppPaymentModelInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the app payment model." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PAID" ) ;
  ] .

# Shape for Custom Intent Info
googleads:CustomIntentInfoShape a sh:NodeShape ;
  sh:targetClass googleads:CustomIntentInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomIntentInfo/customIntent> ;
    sh:name "custom intent" ;
    sh:description "The CustomInterest resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Audience Info
googleads:CustomAudienceInfoShape a sh:NodeShape ;
  sh:targetClass googleads:CustomAudienceInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudienceInfo/customAudience> ;
    sh:name "custom audience" ;
    sh:description "The CustomAudience resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for You Tube Channel Info
googleads:YouTubeChannelInfoShape a sh:NodeShape ;
  sh:targetClass googleads:YouTubeChannelInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeChannelInfo/channelId> ;
    sh:name "channel id" ;
    sh:description "The YouTube uploader channel id or the channel code of a YouTube channel." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Webpage Info
googleads:WebpageInfoShape a sh:NodeShape ;
  sh:targetClass googleads:WebpageInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageInfo/criterionName> ;
    sh:name "criterion name" ;
    sh:description "The name of the criterion that is defined by this parameter. The name value will be used for identifying, sorting and filtering criteria with this type of parameters. This field is required for CREATE operations and is prohibited on UPDATE operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageInfo/coveragePercentage> ;
    sh:name "coverage percentage" ;
    sh:description "Website criteria coverage percentage. This is the computed percentage of website coverage based on the website target, negative website target and negative keywords in the ad group and campaign. For instance, when coverage returns as 1, it indicates it has 100% coverage. This field is read-only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageInfo/sample> ;
    sh:name "sample" ;
    sh:description "List of sample urls that match the website target. This field is read-only." ;
    sh:node googleads:WebpageSampleInfoShape ;
    sh:class googleads:WebpageSampleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageInfo/conditions> ;
    sh:name "conditions" ;
    sh:description "Conditions, or logical expressions, for webpage targeting. The list of webpage targeting conditions are and-ed together when evaluated for targeting. An empty list of conditions indicates all pages of the campaign's website are targeted. This field is required for CREATE operations and is prohibited on UPDATE operations." ;
    sh:node googleads:WebpageConditionInfoShape ;
    sh:class googleads:WebpageConditionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Webpage Sample Info
googleads:WebpageSampleInfoShape a sh:NodeShape ;
  sh:targetClass googleads:WebpageSampleInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageSampleInfo/sampleUrls> ;
    sh:name "sample urls" ;
    sh:description "Webpage sample urls" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Webpage Condition Info
googleads:WebpageConditionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:WebpageConditionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageConditionInfo/operand> ;
    sh:name "operand" ;
    sh:description "Operand of webpage targeting condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "URL" "CATEGORY" "PAGE_TITLE" "PAGE_CONTENT" "CUSTOM_LABEL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageConditionInfo/operator> ;
    sh:name "operator" ;
    sh:description "Operator of webpage targeting condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EQUALS" "CONTAINS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageConditionInfo/argument> ;
    sh:name "argument" ;
    sh:description "Argument of webpage targeting condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for You Tube Video Info
googleads:YouTubeVideoInfoShape a sh:NodeShape ;
  sh:targetClass googleads:YouTubeVideoInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoInfo/videoId> ;
    sh:name "video id" ;
    sh:description "YouTube video id as it appears on the YouTube watch page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience Info
googleads:AudienceInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AudienceInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceInfo/audience> ;
    sh:name "audience" ;
    sh:description "The Audience resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Gender Info
googleads:GenderInfoShape a sh:NodeShape ;
  sh:targetClass googleads:GenderInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GenderInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the gender." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MALE" "FEMALE" "UNDETERMINED" ) ;
  ] .

# Shape for Income Range Info
googleads:IncomeRangeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:IncomeRangeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.IncomeRangeInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the income range." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INCOME_RANGE_0_50" "INCOME_RANGE_50_60" "INCOME_RANGE_60_70" "INCOME_RANGE_70_80" "INCOME_RANGE_80_90" "INCOME_RANGE_90_UP" "INCOME_RANGE_UNDETERMINED" ) ;
  ] .

# Shape for Combined Audience Info
googleads:CombinedAudienceInfoShape a sh:NodeShape ;
  sh:targetClass googleads:CombinedAudienceInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CombinedAudienceInfo/combinedAudience> ;
    sh:name "combined audience" ;
    sh:description "The CombinedAudience resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Life Event Info
googleads:LifeEventInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LifeEventInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEventInfo/lifeEventId> ;
    sh:name "life event id" ;
    sh:description "Taxonomy id of the life event." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Placement Info
googleads:PlacementInfoShape a sh:NodeShape ;
  sh:targetClass googleads:PlacementInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PlacementInfo/url> ;
    sh:name "url" ;
    sh:description "URL of the placement. For example, \"http://www.domain.com\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Parental Status Info
googleads:ParentalStatusInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ParentalStatusInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ParentalStatusInfo/type> ;
    sh:name "type" ;
    sh:description "Type of the parental status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PARENT" "NOT_A_PARENT" "UNDETERMINED" ) ;
  ] .

# Shape for Retail Filter Bundle
googleads:RetailFilterBundleShape a sh:NodeShape ;
  sh:targetClass googleads:RetailFilterBundle ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RetailFilterBundle/sharedSet> ;
    sh:name "shared set" ;
    sh:description "The resource name of the shared set that contains the retail filter. This field is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for User Interest Info
googleads:UserInterestInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserInterestInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterestInfo/userInterestCategory> ;
    sh:name "user interest category" ;
    sh:description "The UserInterest resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Criterion Position Estimates
googleads:AdGroupCriterionPositionEstimatesShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCriterionPositionEstimates ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionPositionEstimates/topOfPageCpcMicros> ;
    sh:name "top of page cpc micros" ;
    sh:description "Output only. The estimate of the CPC bid required for ad to be displayed at the top of the first page of search results." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionPositionEstimates/estimatedAddCostAtFirstPositionCpc> ;
    sh:name "estimated add cost at first position cpc" ;
    sh:description "Output only. Estimate of how your cost per week might change when changing your keyword bid to the value in first_position_cpc_micros." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionPositionEstimates/firstPageCpcMicros> ;
    sh:name "first page cpc micros" ;
    sh:description "Output only. The estimate of the CPC bid required for ad to be shown on first page of search results." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionPositionEstimates/firstPositionCpcMicros> ;
    sh:name "first position cpc micros" ;
    sh:description "Output only. The estimate of the CPC bid required for ad to be displayed in first position, at the top of the first page of search results." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionPositionEstimates/estimatedAddClicksAtFirstPositionCpc> ;
    sh:name "estimated add clicks at first position cpc" ;
    sh:description "Output only. Estimate of how many clicks per week you might get by changing your keyword bid to the value in first_position_cpc_micros." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Location Info
googleads:LocationInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LocationInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationInfo/geoTargetConstant> ;
    sh:name "geo target constant" ;
    sh:description "The geo target constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Affinity Info
googleads:CustomAffinityInfoShape a sh:NodeShape ;
  sh:targetClass googleads:CustomAffinityInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAffinityInfo/customAffinity> ;
    sh:name "custom affinity" ;
    sh:description "The CustomInterest resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Vertical Ads Item Group Rule List Info
googleads:VerticalAdsItemGroupRuleListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VerticalAdsItemGroupRuleListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleListInfo/sharedSet> ;
    sh:name "shared set" ;
    sh:description "The shared set resource name of the vertical ads item group rule list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Video Lineup Info
googleads:VideoLineupInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoLineupInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoLineupInfo/videoLineupId> ;
    sh:name "video lineup id" ;
    sh:description "ID for a Video lineup. Contact your Google business development representative for details." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Criterion Customizer
googleads:AdGroupCriterionCustomizerShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCriterionCustomizer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionCustomizer/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group criterion customizer. Ad group criterion customizer resource names have the form: `customers/{customer_id}/adGroupCriterionCustomizers/{ad_group_id}~{criterion_id}~{customizer_attribute_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionCustomizer/customizerAttribute> ;
    sh:name "customizer attribute" ;
    sh:description "Required. Immutable. The customizer attribute which is linked to the ad group criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionCustomizer/value> ;
    sh:name "value" ;
    sh:description "Required. The value to associate with the customizer attribute at this level. The value must be of the type specified for the CustomizerAttribute." ;
    sh:node googleads:CustomizerValueShape ;
    sh:class googleads:CustomizerValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionCustomizer/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the ad group criterion customizer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionCustomizer/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "Immutable. The ad group criterion to which the customizer attribute is linked. It must be a keyword criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customizer Value
googleads:CustomizerValueShape a sh:NodeShape ;
  sh:targetClass googleads:CustomizerValue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomizerValue/type> ;
    sh:name "type" ;
    sh:description "Required. The data type for the customizer value. It must match the attribute type. The string_value content must match the constraints associated with the type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TEXT" "NUMBER" "PRICE" "PERCENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomizerValue/stringValue> ;
    sh:name "string value" ;
    sh:description "Required. Value to insert in creative text. Customizer values of all types are stored as string to make formatting unambiguous." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Criterion Label
googleads:AdGroupCriterionLabelShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCriterionLabel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionLabel/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group criterion label. Ad group criterion label resource names have the form: `customers/{customer_id}/adGroupCriterionLabels/{ad_group_id}~{criterion_id}~{label_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionLabel/label> ;
    sh:name "label" ;
    sh:description "Immutable. The label assigned to the ad group criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionLabel/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "Immutable. The ad group criterion to which the label is attached." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Criterion Simulation
googleads:AdGroupCriterionSimulationShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCriterionSimulation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/startDate> ;
    sh:name "start date" ;
    sh:description "Output only. First day on which the simulation is based, in YYYY-MM-DD format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/percentCpcBidPointList> ;
    sh:name "percent cpc bid point list" ;
    sh:description "Output only. Simulation points if the simulation type is PERCENT_CPC_BID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:PercentCpcBidSimulationPointListShape ;
    sh:class googleads:PercentCpcBidSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/cpcBidPointList> ;
    sh:name "cpc bid point list" ;
    sh:description "Output only. Simulation points if the simulation type is CPC_BID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CpcBidSimulationPointListShape ;
    sh:class googleads:CpcBidSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/modificationMethod> ;
    sh:name "modification method" ;
    sh:description "Output only. How the simulation modifies the field." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNIFORM" "DEFAULT" "SCALING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/type> ;
    sh:name "type" ;
    sh:description "Output only. The field that the simulation modifies." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CPC_BID" "CPV_BID" "TARGET_CPA" "BID_MODIFIER" "TARGET_ROAS" "PERCENT_CPC_BID" "TARGET_IMPRESSION_SHARE" "BUDGET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the ad group criterion simulation. Ad group criterion simulation resource names have the form: `customers/{customer_id}/adGroupCriterionSimulations/{ad_group_id}~{criterion_id}~{type}~{modification_method}~{start_date}~{end_date}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/criterionId> ;
    sh:name "criterion id" ;
    sh:description "Output only. Criterion ID of the simulation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/endDate> ;
    sh:name "end date" ;
    sh:description "Output only. Last day on which the simulation is based, in YYYY-MM-DD format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCriterionSimulation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "Output only. AdGroup ID of the simulation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Percent Cpc Bid Simulation Point List
googleads:PercentCpcBidSimulationPointListShape a sh:NodeShape ;
  sh:targetClass googleads:PercentCpcBidSimulationPointList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPointList/points> ;
    sh:name "points" ;
    sh:description "Projected metrics for a series of percent CPC bid amounts." ;
    sh:node googleads:PercentCpcBidSimulationPointShape ;
    sh:class googleads:PercentCpcBidSimulationPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Percent Cpc Bid Simulation Point
googleads:PercentCpcBidSimulationPointShape a sh:NodeShape ;
  sh:targetClass googleads:PercentCpcBidSimulationPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPoint/biddableConversions> ;
    sh:name "biddable conversions" ;
    sh:description "Projected number of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPoint/clicks> ;
    sh:name "clicks" ;
    sh:description "Projected number of clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPoint/topSlotImpressions> ;
    sh:name "top slot impressions" ;
    sh:description "Projected number of top slot impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPoint/impressions> ;
    sh:name "impressions" ;
    sh:description "Projected number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPoint/biddableConversionsValue> ;
    sh:name "biddable conversions value" ;
    sh:description "Projected total value of biddable conversions in local currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPoint/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Projected cost in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpcBidSimulationPoint/percentCpcBidMicros> ;
    sh:name "percent cpc bid micros" ;
    sh:description "The simulated percent CPC upon which projected metrics are based. Percent CPC expressed as fraction of the advertised price for some good or service. The value stored here is 1,000,000 * [fraction]." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Cpc Bid Simulation Point List
googleads:CpcBidSimulationPointListShape a sh:NodeShape ;
  sh:targetClass googleads:CpcBidSimulationPointList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPointList/points> ;
    sh:name "points" ;
    sh:description "Projected metrics for a series of CPC bid amounts." ;
    sh:node googleads:CpcBidSimulationPointShape ;
    sh:class googleads:CpcBidSimulationPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Cpc Bid Simulation Point
googleads:CpcBidSimulationPointShape a sh:NodeShape ;
  sh:targetClass googleads:CpcBidSimulationPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/biddableConversions> ;
    sh:name "biddable conversions" ;
    sh:description "Projected number of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/topSlotImpressions> ;
    sh:name "top slot impressions" ;
    sh:description "Projected number of top slot impressions. Only search advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/cpcBidMicros> ;
    sh:name "cpc bid micros" ;
    sh:description "The simulated CPC bid upon which projected metrics are based." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/requiredBudgetAmountMicros> ;
    sh:name "required budget amount micros" ;
    sh:description "Projected required daily budget that the advertiser must set in order to receive the estimated traffic, in micros of advertiser currency." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/clicks> ;
    sh:name "clicks" ;
    sh:description "Projected number of clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/impressions> ;
    sh:name "impressions" ;
    sh:description "Projected number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/biddableConversionsValue> ;
    sh:name "biddable conversions value" ;
    sh:description "Projected total value of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Projected cost in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpcBidSimulationPoint/cpcBidScalingModifier> ;
    sh:name "cpc bid scaling modifier" ;
    sh:description "The simulated scaling modifier upon which projected metrics are based. All CPC bids relevant to the simulated entity are scaled by this modifier." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Customizer
googleads:AdGroupCustomizerShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupCustomizer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCustomizer/value> ;
    sh:name "value" ;
    sh:description "Required. The value to associate with the customizer attribute at this level. The value must be of the type specified for the CustomizerAttribute." ;
    sh:node googleads:CustomizerValueShape ;
    sh:class googleads:CustomizerValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCustomizer/customizerAttribute> ;
    sh:name "customizer attribute" ;
    sh:description "Required. Immutable. The customizer attribute which is linked to the ad group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCustomizer/adGroup> ;
    sh:name "ad group" ;
    sh:description "Immutable. The ad group to which the customizer attribute is linked." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCustomizer/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group customizer. Ad group customizer resource names have the form: `customers/{customer_id}/adGroupCustomizers/{ad_group_id}~{customizer_attribute_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupCustomizer/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the ad group customizer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] .

# Shape for Ad Group Label
googleads:AdGroupLabelShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupLabel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupLabel/label> ;
    sh:name "label" ;
    sh:description "Immutable. The label assigned to the ad group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupLabel/adGroup> ;
    sh:name "ad group" ;
    sh:description "Immutable. The ad group to which the label is attached." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupLabel/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad group label. Ad group label resource names have the form: `customers/{customer_id}/adGroupLabels/{ad_group_id}~{label_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Simulation
googleads:AdGroupSimulationShape a sh:NodeShape ;
  sh:targetClass googleads:AdGroupSimulation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "Output only. Ad group id of the simulation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/endDate> ;
    sh:name "end date" ;
    sh:description "Output only. Last day on which the simulation is based, in YYYY-MM-DD format" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/targetCpaPointList> ;
    sh:name "target cpa point list" ;
    sh:description "Output only. Simulation points if the simulation type is TARGET_CPA." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TargetCpaSimulationPointListShape ;
    sh:class googleads:TargetCpaSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/cpvBidPointList> ;
    sh:name "cpv bid point list" ;
    sh:description "Output only. Simulation points if the simulation type is CPV_BID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CpvBidSimulationPointListShape ;
    sh:class googleads:CpvBidSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the ad group simulation. Ad group simulation resource names have the form: `customers/{customer_id}/adGroupSimulations/{ad_group_id}~{type}~{modification_method}~{start_date}~{end_date}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/type> ;
    sh:name "type" ;
    sh:description "Output only. The field that the simulation modifies." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CPC_BID" "CPV_BID" "TARGET_CPA" "BID_MODIFIER" "TARGET_ROAS" "PERCENT_CPC_BID" "TARGET_IMPRESSION_SHARE" "BUDGET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/modificationMethod> ;
    sh:name "modification method" ;
    sh:description "Output only. How the simulation modifies the field." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNIFORM" "DEFAULT" "SCALING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/targetRoasPointList> ;
    sh:name "target roas point list" ;
    sh:description "Output only. Simulation points if the simulation type is TARGET_ROAS." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TargetRoasSimulationPointListShape ;
    sh:class googleads:TargetRoasSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/cpcBidPointList> ;
    sh:name "cpc bid point list" ;
    sh:description "Output only. Simulation points if the simulation type is CPC_BID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CpcBidSimulationPointListShape ;
    sh:class googleads:CpcBidSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdGroupSimulation/startDate> ;
    sh:name "start date" ;
    sh:description "Output only. First day on which the simulation is based, in YYYY-MM-DD format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Cpa Simulation Point List
googleads:TargetCpaSimulationPointListShape a sh:NodeShape ;
  sh:targetClass googleads:TargetCpaSimulationPointList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPointList/points> ;
    sh:name "points" ;
    sh:description "Projected metrics for a series of target CPA amounts." ;
    sh:node googleads:TargetCpaSimulationPointShape ;
    sh:class googleads:TargetCpaSimulationPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Target Cpa Simulation Point
googleads:TargetCpaSimulationPointShape a sh:NodeShape ;
  sh:targetClass googleads:TargetCpaSimulationPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/appInstalls> ;
    sh:name "app installs" ;
    sh:description "Projected number of app installs." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/requiredBudgetAmountMicros> ;
    sh:name "required budget amount micros" ;
    sh:description "Projected required daily budget that the advertiser must set in order to receive the estimated traffic, in micros of advertiser currency." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/interactions> ;
    sh:name "interactions" ;
    sh:description "Projected number of interactions. Only discovery advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/inAppActions> ;
    sh:name "in app actions" ;
    sh:description "Projected number of in-app actions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "The simulated target CPA upon which projected metrics are based." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/biddableConversions> ;
    sh:name "biddable conversions" ;
    sh:description "Projected number of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/topSlotImpressions> ;
    sh:name "top slot impressions" ;
    sh:description "Projected number of top slot impressions. Only search advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/biddableConversionsValue> ;
    sh:name "biddable conversions value" ;
    sh:description "Projected total value of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Projected cost in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/targetCpaScalingModifier> ;
    sh:name "target cpa scaling modifier" ;
    sh:description "The simulated scaling modifier upon which projected metrics are based. All CPA targets relevant to the simulated entity are scaled by this modifier." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/clicks> ;
    sh:name "clicks" ;
    sh:description "Projected number of clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpaSimulationPoint/impressions> ;
    sh:name "impressions" ;
    sh:description "Projected number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Cpv Bid Simulation Point List
googleads:CpvBidSimulationPointListShape a sh:NodeShape ;
  sh:targetClass googleads:CpvBidSimulationPointList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpvBidSimulationPointList/points> ;
    sh:name "points" ;
    sh:description "Projected metrics for a series of CPV bid amounts." ;
    sh:node googleads:CpvBidSimulationPointShape ;
    sh:class googleads:CpvBidSimulationPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Cpv Bid Simulation Point
googleads:CpvBidSimulationPointShape a sh:NodeShape ;
  sh:targetClass googleads:CpvBidSimulationPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpvBidSimulationPoint/cpvBidMicros> ;
    sh:name "cpv bid micros" ;
    sh:description "The simulated CPV bid upon which projected metrics are based." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpvBidSimulationPoint/views> ;
    sh:name "views" ;
    sh:description "Projected number of views." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpvBidSimulationPoint/impressions> ;
    sh:name "impressions" ;
    sh:description "Projected number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CpvBidSimulationPoint/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Projected cost in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Roas Simulation Point List
googleads:TargetRoasSimulationPointListShape a sh:NodeShape ;
  sh:targetClass googleads:TargetRoasSimulationPointList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPointList/points> ;
    sh:name "points" ;
    sh:description "Projected metrics for a series of target ROAS amounts." ;
    sh:node googleads:TargetRoasSimulationPointShape ;
    sh:class googleads:TargetRoasSimulationPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Target Roas Simulation Point
googleads:TargetRoasSimulationPointShape a sh:NodeShape ;
  sh:targetClass googleads:TargetRoasSimulationPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/impressions> ;
    sh:name "impressions" ;
    sh:description "Projected number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/biddableConversions> ;
    sh:name "biddable conversions" ;
    sh:description "Projected number of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/clicks> ;
    sh:name "clicks" ;
    sh:description "Projected number of clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/topSlotImpressions> ;
    sh:name "top slot impressions" ;
    sh:description "Projected number of top slot impressions. Only Search advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/requiredBudgetAmountMicros> ;
    sh:name "required budget amount micros" ;
    sh:description "Projected required daily budget that the advertiser must set in order to receive the estimated traffic, in micros of advertiser currency." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/biddableConversionsValue> ;
    sh:name "biddable conversions value" ;
    sh:description "Projected total value of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Projected cost in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoasSimulationPoint/targetRoas> ;
    sh:name "target roas" ;
    sh:description "The simulated target ROAS upon which projected metrics are based." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Parameter
googleads:AdParameterShape a sh:NodeShape ;
  sh:targetClass googleads:AdParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdParameter/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "Immutable. The ad group criterion that this ad parameter belongs to." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdParameter/insertionText> ;
    sh:name "insertion text" ;
    sh:description "Numeric value to insert into the ad text. The following restrictions apply: - Can use comma or period as a separator, with an optional period or comma (respectively) for fractional values. For example, 1,000,000.00 and 2.000.000,10 are valid. - Can be prepended or appended with a currency symbol. For example, $99.99 is valid. - Can be prepended or appended with a currency code. For example, 99.99USD and EUR200 are valid. - Can use '%'. For example, 1.0% and 1,0% are valid. - Can use plus or minus. For example, -10.99 and 25+ are valid. - Can use '/' between two numbers. For example 4/1 and 0.95/0.45 are valid." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdParameter/parameterIndex> ;
    sh:name "parameter index" ;
    sh:description "Immutable. The unique index of this ad parameter. Must be either 1 or 2." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdParameter/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the ad parameter. Ad parameter resource names have the form: `customers/{customer_id}/adParameters/{ad_group_id}~{criterion_id}~{parameter_index}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Schedule Info
googleads:AdScheduleInfoShape a sh:NodeShape ;
  sh:targetClass googleads:AdScheduleInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdScheduleInfo/startHour> ;
    sh:name "start hour" ;
    sh:description "Starting hour in 24 hour time. This field must be between 0 and 23, inclusive. This field is required for CREATE operations and is prohibited on UPDATE operations." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdScheduleInfo/endHour> ;
    sh:name "end hour" ;
    sh:description "Ending hour in 24 hour time; 24 signifies end of the day. This field must be between 0 and 24, inclusive. This field is required for CREATE operations and is prohibited on UPDATE operations." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdScheduleInfo/startMinute> ;
    sh:name "start minute" ;
    sh:description "Minutes after the start hour at which this schedule starts. This field is required for CREATE operations and is prohibited on UPDATE operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ZERO" "FIFTEEN" "THIRTY" "FORTY_FIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdScheduleInfo/dayOfWeek> ;
    sh:name "day of week" ;
    sh:description "Day of the week the schedule applies to. This field is required for CREATE operations and is prohibited on UPDATE operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdScheduleInfo/endMinute> ;
    sh:name "end minute" ;
    sh:description "Minutes after the end hour at which this schedule ends. The schedule is exclusive of the end minute. This field is required for CREATE operations and is prohibited on UPDATE operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ZERO" "FIFTEEN" "THIRTY" "FORTY_FIVE" ) ;
  ] .

# Shape for Ad Schedule View
googleads:AdScheduleViewShape a sh:NodeShape ;
  sh:targetClass googleads:AdScheduleView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdScheduleView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the ad schedule view. AdSchedule view resource names have the form: `customers/{customer_id}/adScheduleViews/{campaign_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Strength Action Item
googleads:AdStrengthActionItemShape a sh:NodeShape ;
  sh:targetClass googleads:AdStrengthActionItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdStrengthActionItem/actionItemType> ;
    sh:name "action item type" ;
    sh:description "Output only. The action item type." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADD_ASSET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdStrengthActionItem/addAssetDetails> ;
    sh:name "add asset details" ;
    sh:description "Output only. The action item details for action item type ADD_ASSET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdStrengthActionItemAddAssetDetailsShape ;
    sh:class googleads:AdStrengthActionItemAddAssetDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Strength Action Item Add Asset Details
googleads:AdStrengthActionItemAddAssetDetailsShape a sh:NodeShape ;
  sh:targetClass googleads:AdStrengthActionItemAddAssetDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdStrengthActionItemAddAssetDetails/assetFieldType> ;
    sh:name "asset field type" ;
    sh:description "Output only. The asset field type of the asset(s) to add." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdStrengthActionItemAddAssetDetails/assetCount> ;
    sh:name "asset count" ;
    sh:description "Output only. The number of assets to add." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdStrengthActionItemAddAssetDetails/videoAspectRatioRequirement> ;
    sh:name "video aspect ratio requirement" ;
    sh:description "Output only. For video field types, the required aspect ratio of the video. When unset and asset_field_type is YOUTUBE_VIDEO, the system recommends the advertiser upload any YouTube video, regardless of aspect ratio." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HORIZONTAL" "SQUARE" "VERTICAL" ) ;
  ] .

# Shape for Advertising Partner Identifier
googleads:AdvertisingPartnerIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:AdvertisingPartnerIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdvertisingPartnerIdentifier/customer> ;
    sh:name "customer" ;
    sh:description "Output only. The resource name of the advertising partner Google Ads account. This field is required and should not be empty when creating a new Advertising Partner link. It is unable to be modified after the creation of the link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Advertising Partner Link Invitation Identifier
googleads:AdvertisingPartnerLinkInvitationIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:AdvertisingPartnerLinkInvitationIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdvertisingPartnerLinkInvitationIdentifier/customer> ;
    sh:name "customer" ;
    sh:description "Immutable. The resource name of the advertising partner Google Ads account. This field is read only." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Advertising Partner Link Invitation Properties
googleads:AdvertisingPartnerLinkInvitationPropertiesShape a sh:NodeShape ;
  sh:targetClass googleads:AdvertisingPartnerLinkInvitationProperties ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdvertisingPartnerLinkInvitationProperties/allowedDomain> ;
    sh:name "allowed domain" ;
    sh:description "Immutable. The allowed domain for the Advertising Partner link invitation. The advertising partner will only be able to advertise on this domain. The field is immutable after the creation of the link invitation." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Advertising Partner Properties
googleads:AdvertisingPartnerPropertiesShape a sh:NodeShape ;
  sh:targetClass googleads:AdvertisingPartnerProperties ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AdvertisingPartnerProperties/allowedDomain> ;
    sh:name "allowed domain" ;
    sh:description "Output only. The allowed domain for the Advertising Partner link. The advertising partner will only be able to advertise on this domain. The field is immutable." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Age Dimension
googleads:AgeDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:AgeDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AgeDimension/includeUndetermined> ;
    sh:name "include undetermined" ;
    sh:description "Include users whose age is not determined." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AgeDimension/ageRanges> ;
    sh:name "age ranges" ;
    sh:description "Contiguous age range to be included in the dimension." ;
    sh:node googleads:AgeSegmentShape ;
    sh:class googleads:AgeSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Age Segment
googleads:AgeSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:AgeSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AgeSegment/minAge> ;
    sh:name "min age" ;
    sh:description "Minimum age to include. A minimum age must be specified and must be at least 18. Allowed values are 18, 25, 35, 45, 55, and 65." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AgeSegment/maxAge> ;
    sh:name "max age" ;
    sh:description "Maximum age to include. A maximum age need not be specified. If specified, max_age must be greater than min_age, and allowed values are 24, 34, 44, 54, and 64." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Age Range View
googleads:AgeRangeViewShape a sh:NodeShape ;
  sh:targetClass googleads:AgeRangeView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AgeRangeView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the age range view. Age range view resource names have the form: `customers/{customer_id}/ageRangeViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ai Max Search Term Ad Combination View
googleads:AiMaxSearchTermAdCombinationViewShape a sh:NodeShape ;
  sh:targetClass googleads:AiMaxSearchTermAdCombinationView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AiMaxSearchTermAdCombinationView/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. Ad group where the search term served." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AiMaxSearchTermAdCombinationView/landingPage> ;
    sh:name "landing page" ;
    sh:description "Output only. The destination URL, which was dynamically generated. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AiMaxSearchTermAdCombinationView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the AI Max Search Term Ad Combination view AI Max Search Term Ad Combination view resource names have the form: `customers/{customer_id}/aiMaxSearchTermAdCombinationViews/{ad_group_id}~{URL-base64_search_term}~{URL-base64_landing_page}~{URL-base64_headline}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AiMaxSearchTermAdCombinationView/searchTerm> ;
    sh:name "search term" ;
    sh:description "Output only. The search term that triggered the ad. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AiMaxSearchTermAdCombinationView/headline> ;
    sh:name "headline" ;
    sh:description "Output only. The concatenated string containing headline assets for the ad. Up to three headline assets are concatenated, separated by \" | \". This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Android Privacy Shared Key Google Ad Group
googleads:AndroidPrivacySharedKeyGoogleAdGroupShape a sh:NodeShape ;
  sh:targetClass googleads:AndroidPrivacySharedKeyGoogleAdGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleAdGroup/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Android privacy shared key. Android privacy shared key resource names have the form: `customers/{customer_id}/androidPrivacySharedKeyGoogleAdGroups/{campaign_id}~{ad_group_id}~{android_privacy_interaction_type}~{android_privacy_network_type}~{android_privacy_interaction_date(yyyy-mm-dd)}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleAdGroup/androidPrivacyNetworkType> ;
    sh:name "android privacy network type" ;
    sh:description "Output only. The network type enum used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "DISPLAY" "YOUTUBE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleAdGroup/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "Output only. The ad group ID used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleAdGroup/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Output only. The campaign ID used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleAdGroup/sharedAdGroupKey> ;
    sh:name "shared ad group key" ;
    sh:description "Output only. 128 bit hex string of the encoded shared ad group key, including a '0x' prefix. This key can be used to do a bitwise OR operator with the aggregate conversion key to create a full aggregation key to retrieve the Aggregate API Report in Android Privacy Sandbox." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleAdGroup/androidPrivacyInteractionDate> ;
    sh:name "android privacy interaction date" ;
    sh:description "Output only. The interaction date used in the shared key encoding in the format of \"YYYY-MM-DD\" in UTC timezone." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleAdGroup/androidPrivacyInteractionType> ;
    sh:name "android privacy interaction type" ;
    sh:description "Output only. The interaction type enum used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CLICK" "ENGAGED_VIEW" "VIEW" ) ;
  ] .

# Shape for Android Privacy Shared Key Google Campaign
googleads:AndroidPrivacySharedKeyGoogleCampaignShape a sh:NodeShape ;
  sh:targetClass googleads:AndroidPrivacySharedKeyGoogleCampaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleCampaign/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Output only. The campaign ID used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleCampaign/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Android privacy shared key. Android privacy shared key resource names have the form: `customers/{customer_id}/androidPrivacySharedKeyGoogleCampaigns/{campaign_id}~{android_privacy_interaction_type}~{android_privacy_interaction_date(yyyy-mm-dd)}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleCampaign/sharedCampaignKey> ;
    sh:name "shared campaign key" ;
    sh:description "Output only. 128 bit hex string of the encoded shared campaign key, including a '0x' prefix. This key can be used to do a bitwise OR operator with the aggregate conversion key to create a full aggregation key to retrieve the Aggregate API Report in Android Privacy Sandbox." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleCampaign/androidPrivacyInteractionType> ;
    sh:name "android privacy interaction type" ;
    sh:description "Output only. The interaction type enum used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CLICK" "ENGAGED_VIEW" "VIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleCampaign/androidPrivacyInteractionDate> ;
    sh:name "android privacy interaction date" ;
    sh:description "Output only. The interaction date used in the shared key encoding in the format of \"YYYY-MM-DD\" in UTC timezone." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Android Privacy Shared Key Google Network Type
googleads:AndroidPrivacySharedKeyGoogleNetworkTypeShape a sh:NodeShape ;
  sh:targetClass googleads:AndroidPrivacySharedKeyGoogleNetworkType ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleNetworkType/androidPrivacyInteractionDate> ;
    sh:name "android privacy interaction date" ;
    sh:description "Output only. The interaction date used in the shared key encoding in the format of \"YYYY-MM-DD\" in UTC timezone." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleNetworkType/sharedNetworkTypeKey> ;
    sh:name "shared network type key" ;
    sh:description "Output only. 128 bit hex string of the encoded shared network type key, including a '0x' prefix. This key can be used to do a bitwise OR operator with the aggregate conversion key to create a full aggregation key to retrieve the Aggregate API Report in Android Privacy Sandbox." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleNetworkType/androidPrivacyInteractionType> ;
    sh:name "android privacy interaction type" ;
    sh:description "Output only. The interaction type enum used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CLICK" "ENGAGED_VIEW" "VIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleNetworkType/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Output only. The campaign ID used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleNetworkType/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Android privacy shared key. Android privacy shared key resource names have the form: `customers/{customer_id}/androidPrivacySharedKeyGoogleNetworkTypes/{campaign_id}~{android_privacy_interaction_type}~{android_privacy_network_type}~{android_privacy_interaction_date(yyyy-mm-dd)}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AndroidPrivacySharedKeyGoogleNetworkType/androidPrivacyNetworkType> ;
    sh:name "android privacy network type" ;
    sh:description "Output only. The network type enum used in the share key encoding." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "DISPLAY" "YOUTUBE" ) ;
  ] .

# Shape for App Deep Link Asset
googleads:AppDeepLinkAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AppDeepLinkAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppDeepLinkAsset/appDeepLinkUri> ;
    sh:name "app deep link uri" ;
    sh:description "The uri for the app deep link, The uri can be either a custom scheme uri (e.g. mystore://shoes) or universal uri (e.g. http://www.mystore.com/shoes)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Applied Incentive
googleads:AppliedIncentiveShape a sh:NodeShape ;
  sh:targetClass googleads:AppliedIncentive ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Output only. The currency code for all monetary amounts (for example, \"USD\")." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/rewardExpirationDateTime> ;
    sh:name "reward expiration date time" ;
    sh:description "Output only. The time when the granted reward expires in \"YYYY-MM-DD HH:MM:SS\" format in UTC. This field is not set if the reward has not been granted." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/fulfillmentExpirationDateTime> ;
    sh:name "fulfillment expiration date time" ;
    sh:description "Output only. The time by which the incentive's fulfillment requirements must be met, in \"YYYY-MM-DD HH:MM:SS\" format in UTC." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/couponCode> ;
    sh:name "coupon code" ;
    sh:description "Output only. The coupon code of the incentive." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/requiredMinSpendMicros> ;
    sh:name "required min spend micros" ;
    sh:description "Output only. The minimum amount that must be spent to fulfill the coupon requirements, in micros." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/grantedAmountMicros> ;
    sh:name "granted amount micros" ;
    sh:description "Output only. The amount of the reward granted in micros. This field is not set if the reward has not been granted." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/incentiveState> ;
    sh:name "incentive state" ;
    sh:description "Output only. The current state of the incentive." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REDEEMED" "FULFILLED" "REWARD_GRANTED" "EXPIRED" "REWARD_EXPIRED" "INVALIDATED" "REWARD_EXHAUSTED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/redemptionDateTime> ;
    sh:name "redemption date time" ;
    sh:description "Output only. The redemption time of the incentive in \"YYYY-MM-DD HH:MM:SS\" format in UTC." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/rewardAmountMicros> ;
    sh:name "reward amount micros" ;
    sh:description "Output only. The maximum potential reward amount in micros for the incentive." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/rewardGrantDateTime> ;
    sh:name "reward grant date time" ;
    sh:description "Output only. The time when the reward was granted in \"YYYY-MM-DD HH:MM:SS\" format in UTC. This field is not set if the reward has not been granted." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the incentive. Incentive resource names have the form: `customers/{customer_id}/appliedIncentives/{coupon_code}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/rewardBalanceRemainingMicros> ;
    sh:name "reward balance remaining micros" ;
    sh:description "Output only. The remaining balance of the granted reward in micros. This field is not set if the reward has not been granted." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppliedIncentive/currentSpendTowardsFulfillmentMicros> ;
    sh:name "current spend towards fulfillment micros" ;
    sh:description "Output only. The current amount spent towards the fulfillment requirements, in micros." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for App Top Combination View
googleads:AppTopCombinationViewShape a sh:NodeShape ;
  sh:targetClass googleads:AppTopCombinationView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppTopCombinationView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the app top combination view. App Top Combination view resource names have the form: `customers/{customer_id}/appTopCombinationViews/{ad_group_id}~{ad_id}~{asset_combination_category}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AppTopCombinationView/adGroupTopCombinations> ;
    sh:name "ad group top combinations" ;
    sh:description "Output only. The top combinations of assets that served together." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupCreativeAssetCombinationDataShape ;
    sh:class googleads:AdGroupCreativeAssetCombinationData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Asset
googleads:AssetShape a sh:NodeShape ;
  sh:targetClass googleads:Asset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "A list of mappings to be used for substituting URL custom parameter tags in the tracking_url_template, final_urls, and/or final_mobile_urls." ;
    sh:node googleads:CustomParameterShape ;
    sh:class googleads:CustomParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/sitelinkAsset> ;
    sh:name "sitelink asset" ;
    sh:description "A sitelink asset." ;
    sh:node googleads:SitelinkAssetShape ;
    sh:class googleads:SitelinkAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicJobsAsset> ;
    sh:name "dynamic jobs asset" ;
    sh:description "A dynamic jobs asset." ;
    sh:node googleads:DynamicJobsAssetShape ;
    sh:class googleads:DynamicJobsAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/leadFormAsset> ;
    sh:name "lead form asset" ;
    sh:description "A lead form asset." ;
    sh:node googleads:LeadFormAssetShape ;
    sh:class googleads:LeadFormAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicTravelAsset> ;
    sh:name "dynamic travel asset" ;
    sh:description "A dynamic travel asset." ;
    sh:node googleads:DynamicTravelAssetShape ;
    sh:class googleads:DynamicTravelAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/businessMessageAsset> ;
    sh:name "business message asset" ;
    sh:description "A business message asset." ;
    sh:node googleads:BusinessMessageAssetShape ;
    sh:class googleads:BusinessMessageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/source> ;
    sh:name "source" ;
    sh:description "Output only. Source of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/promotionAsset> ;
    sh:name "promotion asset" ;
    sh:description "A promotion asset." ;
    sh:node googleads:PromotionAssetShape ;
    sh:class googleads:PromotionAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/callToActionAsset> ;
    sh:name "call to action asset" ;
    sh:description "Immutable. A call to action asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CallToActionAssetShape ;
    sh:class googleads:CallToActionAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the asset. Asset resource names have the form: `customers/{customer_id}/assets/{asset_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/locationAsset> ;
    sh:name "location asset" ;
    sh:description "Output only. A location asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LocationAssetShape ;
    sh:class googleads:LocationAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/youtubeVideoListAsset> ;
    sh:name "youtube video list asset" ;
    sh:description "Immutable. A YouTube video list asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeVideoListAssetShape ;
    sh:class googleads:YouTubeVideoListAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/youtubeVideoAsset> ;
    sh:name "youtube video asset" ;
    sh:description "Immutable. A YouTube video asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YoutubeVideoAssetShape ;
    sh:class googleads:YoutubeVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicRealEstateAsset> ;
    sh:name "dynamic real estate asset" ;
    sh:description "A dynamic real estate asset." ;
    sh:node googleads:DynamicRealEstateAssetShape ;
    sh:class googleads:DynamicRealEstateAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/mediaBundleAsset> ;
    sh:name "media bundle asset" ;
    sh:description "Immutable. A media bundle asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MediaBundleAssetShape ;
    sh:class googleads:MediaBundleAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicLocalAsset> ;
    sh:name "dynamic local asset" ;
    sh:description "A dynamic local asset." ;
    sh:node googleads:DynamicLocalAssetShape ;
    sh:class googleads:DynamicLocalAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/pageFeedAsset> ;
    sh:name "page feed asset" ;
    sh:description "A page feed asset." ;
    sh:node googleads:PageFeedAssetShape ;
    sh:class googleads:PageFeedAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/textAsset> ;
    sh:name "text asset" ;
    sh:description "Immutable. A text asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:TextAssetShape ;
    sh:class googleads:TextAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/syntheticContentInfo> ;
    sh:name "synthetic content info" ;
    sh:description "Synthetic content info for the asset." ;
    sh:node googleads:SyntheticContentInfoShape ;
    sh:class googleads:SyntheticContentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/callAsset> ;
    sh:name "call asset" ;
    sh:description "A call asset." ;
    sh:node googleads:CallAssetShape ;
    sh:class googleads:CallAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/type> ;
    sh:name "type" ;
    sh:description "Output only. Type of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "YOUTUBE_VIDEO" "MEDIA_BUNDLE" "IMAGE" "TEXT" "LEAD_FORM" "BOOK_ON_GOOGLE" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "PAGE_FEED" "DYNAMIC_EDUCATION" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "CALL_TO_ACTION" "DYNAMIC_REAL_ESTATE" "DYNAMIC_CUSTOM" "DYNAMIC_HOTELS_AND_RENTALS" "DYNAMIC_FLIGHTS" "DYNAMIC_TRAVEL" "DYNAMIC_LOCAL" "DYNAMIC_JOBS" "LOCATION" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "APP_DEEP_LINK" "YOUTUBE_VIDEO_LIST" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicHotelsAndRentalsAsset> ;
    sh:name "dynamic hotels and rentals asset" ;
    sh:description "A dynamic hotels and rentals asset." ;
    sh:node googleads:DynamicHotelsAndRentalsAssetShape ;
    sh:class googleads:DynamicHotelsAndRentalsAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicFlightsAsset> ;
    sh:name "dynamic flights asset" ;
    sh:description "A dynamic flights asset." ;
    sh:node googleads:DynamicFlightsAssetShape ;
    sh:class googleads:DynamicFlightsAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/hotelPropertyAsset> ;
    sh:name "hotel property asset" ;
    sh:description "Immutable. A hotel property asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:HotelPropertyAssetShape ;
    sh:class googleads:HotelPropertyAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicCustomAsset> ;
    sh:name "dynamic custom asset" ;
    sh:description "A dynamic custom asset." ;
    sh:node googleads:DynamicCustomAssetShape ;
    sh:class googleads:DynamicCustomAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/hotelCalloutAsset> ;
    sh:name "hotel callout asset" ;
    sh:description "A hotel callout asset." ;
    sh:node googleads:HotelCalloutAssetShape ;
    sh:class googleads:HotelCalloutAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/fieldTypePolicySummaries> ;
    sh:name "field type policy summaries" ;
    sh:description "Output only. Policy information for the asset for each FieldType." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:AssetFieldTypePolicySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/priceAsset> ;
    sh:name "price asset" ;
    sh:description "A price asset." ;
    sh:node googleads:PriceAssetShape ;
    sh:class googleads:PriceAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/imageAsset> ;
    sh:name "image asset" ;
    sh:description "Output only. An image asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ImageAssetShape ;
    sh:class googleads:ImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/name> ;
    sh:name "name" ;
    sh:description "Optional name of the asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/policySummary> ;
    sh:name "policy summary" ;
    sh:description "Output only. Policy information for the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetPolicySummaryShape ;
    sh:class googleads:AssetPolicySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/orientation> ;
    sh:name "orientation" ;
    sh:description "Output only. Orientation of the asset. This is only supported for image and video assets." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LANDSCAPE" "PORTRAIT" "SQUARE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/dynamicEducationAsset> ;
    sh:name "dynamic education asset" ;
    sh:description "A dynamic education asset." ;
    sh:node googleads:DynamicEducationAssetShape ;
    sh:class googleads:DynamicEducationAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/structuredSnippetAsset> ;
    sh:name "structured snippet asset" ;
    sh:description "A structured snippet asset." ;
    sh:node googleads:StructuredSnippetAssetShape ;
    sh:class googleads:StructuredSnippetAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "A list of possible final mobile URLs after all cross domain redirects." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/mobileAppAsset> ;
    sh:name "mobile app asset" ;
    sh:description "A mobile app asset." ;
    sh:node googleads:MobileAppAssetShape ;
    sh:class googleads:MobileAppAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/finalUrls> ;
    sh:name "final urls" ;
    sh:description "A list of possible final URLs after all cross domain redirects." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/demandGenCarouselCardAsset> ;
    sh:name "demand gen carousel card asset" ;
    sh:description "Immutable. A Demand Gen carousel card asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:DemandGenCarouselCardAssetShape ;
    sh:class googleads:DemandGenCarouselCardAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/appDeepLinkAsset> ;
    sh:name "app deep link asset" ;
    sh:description "Immutable. An app deep link asset." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AppDeepLinkAssetShape ;
    sh:class googleads:AppDeepLinkAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/bookOnGoogleAsset> ;
    sh:name "book on google asset" ;
    sh:description "A book on google asset." ;
    sh:node googleads:BookOnGoogleAssetShape ;
    sh:class googleads:BookOnGoogleAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "URL template for appending params to landing page URLs served with parallel tracking." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/calloutAsset> ;
    sh:name "callout asset" ;
    sh:description "A callout asset." ;
    sh:node googleads:CalloutAssetShape ;
    sh:class googleads:CalloutAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Asset/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "URL template for constructing a tracking URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Sitelink Asset
googleads:SitelinkAssetShape a sh:NodeShape ;
  sh:targetClass googleads:SitelinkAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SitelinkAsset/linkText> ;
    sh:name "link text" ;
    sh:description "Required. URL display text for the sitelink. The length of this string should be between 1 and 25, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SitelinkAsset/startDate> ;
    sh:name "start date" ;
    sh:description "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SitelinkAsset/endDate> ;
    sh:name "end date" ;
    sh:description "Last date of when this asset is effective and still serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SitelinkAsset/description1> ;
    sh:name "description1" ;
    sh:description "First line of the description for the sitelink. If set, the length should be between 1 and 35, inclusive, and description2 must also be set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SitelinkAsset/adScheduleTargets> ;
    sh:name "ad schedule targets" ;
    sh:description "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total." ;
    sh:node googleads:AdScheduleInfoShape ;
    sh:class googleads:AdScheduleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SitelinkAsset/description2> ;
    sh:name "description2" ;
    sh:description "Second line of the description for the sitelink. If set, the length should be between 1 and 35, inclusive, and description1 must also be set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Jobs Asset
googleads:DynamicJobsAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicJobsAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/locationId> ;
    sh:name "location id" ;
    sh:description "Location ID which can be any sequence of letters and digits. The ID sequence (job ID + location ID) must be unique." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/salary> ;
    sh:name "salary" ;
    sh:description "Salary, for example, $100,000." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/similarJobIds> ;
    sh:name "similar job ids" ;
    sh:description "Similar job IDs, for example, 1275." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/jobId> ;
    sh:name "job id" ;
    sh:description "Required. Job ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/address> ;
    sh:name "address" ;
    sh:description "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/jobCategory> ;
    sh:name "job category" ;
    sh:description "Job category, for example, Technical." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/jobSubtitle> ;
    sh:name "job subtitle" ;
    sh:description "Job subtitle, for example, Level II." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/jobTitle> ;
    sh:name "job title" ;
    sh:description "Required. Job title, for example, Software engineer. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/contextualKeywords> ;
    sh:name "contextual keywords" ;
    sh:description "Contextual keywords, for example, Software engineering job." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/description> ;
    sh:name "description" ;
    sh:description "Description, for example, Apply your technical skills." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicJobsAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Asset
googleads:LeadFormAssetShape a sh:NodeShape ;
  sh:targetClass googleads:LeadFormAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/businessName> ;
    sh:name "business name" ;
    sh:description "Required. The name of the business being advertised." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/privacyPolicyUrl> ;
    sh:name "privacy policy url" ;
    sh:description "Required. Link to a page describing the policy on how the collected data is handled by the advertiser/business." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/customDisclosure> ;
    sh:name "custom disclosure" ;
    sh:description "Custom disclosure shown along with Google disclaimer on the lead form. Accessible to allowed customers only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/postSubmitHeadline> ;
    sh:name "post submit headline" ;
    sh:description "Headline of text shown after form submission that describes how the advertiser will follow up with the user." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/fields> ;
    sh:name "fields" ;
    sh:description "Ordered list of input fields. This field can be updated by reordering questions, but not by adding or removing questions." ;
    sh:node googleads:LeadFormFieldShape ;
    sh:class googleads:LeadFormField ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/customQuestionFields> ;
    sh:name "custom question fields" ;
    sh:description "Ordered list of custom question fields. This field is subject to a limit of 5 qualifying questions per form." ;
    sh:node googleads:LeadFormCustomQuestionFieldShape ;
    sh:class googleads:LeadFormCustomQuestionField ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/postSubmitDescription> ;
    sh:name "post submit description" ;
    sh:description "Detailed description shown after form submission that describes how the advertiser will follow up with the user." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/deliveryMethods> ;
    sh:name "delivery methods" ;
    sh:description "Configured methods for collected lead data to be delivered to advertiser. Only one method typed as WebhookDelivery can be configured." ;
    sh:node googleads:LeadFormDeliveryMethodShape ;
    sh:class googleads:LeadFormDeliveryMethod ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/desiredIntent> ;
    sh:name "desired intent" ;
    sh:description "Chosen intent for the lead form, for example, more volume or more qualified." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LOW_INTENT" "HIGH_INTENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/postSubmitCallToActionType> ;
    sh:name "post submit call to action type" ;
    sh:description "Pre-defined display text that encourages user action after the form is submitted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "VISIT_SITE" "DOWNLOAD" "LEARN_MORE" "SHOP_NOW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/backgroundImageAsset> ;
    sh:name "background image asset" ;
    sh:description "Asset resource name of the background image. The image dimensions must be exactly 1200x628." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/callToActionType> ;
    sh:name "call to action type" ;
    sh:description "Required. Pre-defined display text that encourages user to expand the form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LEARN_MORE" "GET_QUOTE" "APPLY_NOW" "SIGN_UP" "CONTACT_US" "SUBSCRIBE" "DOWNLOAD" "BOOK_NOW" "GET_OFFER" "REGISTER" "GET_INFO" "REQUEST_DEMO" "JOIN_NOW" "GET_STARTED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/headline> ;
    sh:name "headline" ;
    sh:description "Required. Headline of the expanded form to describe what the form is asking for or facilitating." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/callToActionDescription> ;
    sh:name "call to action description" ;
    sh:description "Required. Text giving a clear value proposition of what users expect once they expand the form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormAsset/description> ;
    sh:name "description" ;
    sh:description "Required. Detailed description of the expanded form to describe what the form is asking for or facilitating." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Field
googleads:LeadFormFieldShape a sh:NodeShape ;
  sh:targetClass googleads:LeadFormField ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormField/inputType> ;
    sh:name "input type" ;
    sh:description "Describes the input type, which may be a predefined type such as \"full name\" or a pre-vetted question like \"What kind of vehicle do you have?\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "FULL_NAME" "EMAIL" "PHONE_NUMBER" "POSTAL_CODE" "STREET_ADDRESS" "CITY" "REGION" "COUNTRY" "WORK_EMAIL" "COMPANY_NAME" "WORK_PHONE" "JOB_TITLE" "GOVERNMENT_ISSUED_ID_CPF_BR" "GOVERNMENT_ISSUED_ID_DNI_AR" "GOVERNMENT_ISSUED_ID_DNI_PE" "GOVERNMENT_ISSUED_ID_RUT_CL" "GOVERNMENT_ISSUED_ID_CC_CO" "GOVERNMENT_ISSUED_ID_CI_EC" "GOVERNMENT_ISSUED_ID_RFC_MX" "FIRST_NAME" "LAST_NAME" "VEHICLE_MODEL" "VEHICLE_TYPE" "PREFERRED_DEALERSHIP" "VEHICLE_PURCHASE_TIMELINE" "VEHICLE_OWNERSHIP" "VEHICLE_PAYMENT_TYPE" "VEHICLE_CONDITION" "COMPANY_SIZE" "ANNUAL_SALES" "YEARS_IN_BUSINESS" "JOB_DEPARTMENT" "JOB_ROLE" "OVER_18_AGE" "OVER_19_AGE" "OVER_20_AGE" "OVER_21_AGE" "OVER_22_AGE" "OVER_23_AGE" "OVER_24_AGE" "OVER_25_AGE" "OVER_26_AGE" "OVER_27_AGE" "OVER_28_AGE" "OVER_29_AGE" "OVER_30_AGE" "OVER_31_AGE" "OVER_32_AGE" "OVER_33_AGE" "OVER_34_AGE" "OVER_35_AGE" "OVER_36_AGE" "OVER_37_AGE" "OVER_38_AGE" "OVER_39_AGE" "OVER_40_AGE" "OVER_41_AGE" "OVER_42_AGE" "OVER_43_AGE" "OVER_44_AGE" "OVER_45_AGE" "OVER_46_AGE" "OVER_47_AGE" "OVER_48_AGE" "OVER_49_AGE" "OVER_50_AGE" "OVER_51_AGE" "OVER_52_AGE" "OVER_53_AGE" "OVER_54_AGE" "OVER_55_AGE" "OVER_56_AGE" "OVER_57_AGE" "OVER_58_AGE" "OVER_59_AGE" "OVER_60_AGE" "OVER_61_AGE" "OVER_62_AGE" "OVER_63_AGE" "OVER_64_AGE" "OVER_65_AGE" "EDUCATION_PROGRAM" "EDUCATION_COURSE" "PRODUCT" "SERVICE" "OFFER" "CATEGORY" "PREFERRED_CONTACT_METHOD" "PREFERRED_LOCATION" "PREFERRED_CONTACT_TIME" "PURCHASE_TIMELINE" "YEARS_OF_EXPERIENCE" "JOB_INDUSTRY" "LEVEL_OF_EDUCATION" "PROPERTY_TYPE" "REALTOR_HELP_GOAL" "PROPERTY_COMMUNITY" "PRICE_RANGE" "NUMBER_OF_BEDROOMS" "FURNISHED_PROPERTY" "PETS_ALLOWED_PROPERTY" "NEXT_PLANNED_PURCHASE" "EVENT_SIGNUP_INTEREST" "PREFERRED_SHOPPING_PLACES" "FAVORITE_BRAND" "TRANSPORTATION_COMMERCIAL_LICENSE_TYPE" "EVENT_BOOKING_INTEREST" "DESTINATION_COUNTRY" "DESTINATION_CITY" "DEPARTURE_COUNTRY" "DEPARTURE_CITY" "DEPARTURE_DATE" "RETURN_DATE" "NUMBER_OF_TRAVELERS" "TRAVEL_BUDGET" "TRAVEL_ACCOMMODATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormField/singleChoiceAnswers> ;
    sh:name "single choice answers" ;
    sh:description "Answer configuration for a single choice question. Can be set only for pre-vetted question fields. Minimum of 2 answers required and maximum of 12 allowed." ;
    sh:node googleads:LeadFormSingleChoiceAnswersShape ;
    sh:class googleads:LeadFormSingleChoiceAnswers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormField/hasLocationAnswer> ;
    sh:name "has location answer" ;
    sh:description "Answer configuration for location question. If true, campaign/account level location data (state, city, business name etc) will be rendered on the Lead Form. Starting V13.1, has_location_answer can only be set for \"What is your preferred dealership?\" question, for advertisers with Location Assets setup at campaign/account level." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Single Choice Answers
googleads:LeadFormSingleChoiceAnswersShape a sh:NodeShape ;
  sh:targetClass googleads:LeadFormSingleChoiceAnswers ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSingleChoiceAnswers/answers> ;
    sh:name "answers" ;
    sh:description "List of choices for a single question field. The order of entries defines UI order. Minimum of 2 answers required and maximum of 12 allowed." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Lead Form Custom Question Field
googleads:LeadFormCustomQuestionFieldShape a sh:NodeShape ;
  sh:targetClass googleads:LeadFormCustomQuestionField ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormCustomQuestionField/singleChoiceAnswers> ;
    sh:name "single choice answers" ;
    sh:description "Answer configuration for a single choice question. Minimum of 2 answers and maximum of 12 allowed." ;
    sh:node googleads:LeadFormSingleChoiceAnswersShape ;
    sh:class googleads:LeadFormSingleChoiceAnswers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormCustomQuestionField/customQuestionText> ;
    sh:name "custom question text" ;
    sh:description "The exact custom question field text (for example, \"What kind of vehicle do you have?\")." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormCustomQuestionField/hasLocationAnswer> ;
    sh:name "has location answer" ;
    sh:description "Answer configuration for location question. If true, campaign/account level location data (state, city, business name etc) will be rendered on the Lead Form. Starting V13.1, has_location_answer can only be set for \"What is your preferred dealership?\" question, for advertisers with Location Assets setup at campaign/account level." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Delivery Method
googleads:LeadFormDeliveryMethodShape a sh:NodeShape ;
  sh:targetClass googleads:LeadFormDeliveryMethod ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormDeliveryMethod/webhook> ;
    sh:name "webhook" ;
    sh:description "Webhook method of delivery." ;
    sh:node googleads:WebhookDeliveryShape ;
    sh:class googleads:WebhookDelivery ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Webhook Delivery
googleads:WebhookDeliveryShape a sh:NodeShape ;
  sh:targetClass googleads:WebhookDelivery ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebhookDelivery/googleSecret> ;
    sh:name "google secret" ;
    sh:description "Anti-spoofing secret set by the advertiser as part of the webhook payload." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebhookDelivery/advertiserWebhookUrl> ;
    sh:name "advertiser webhook url" ;
    sh:description "Webhook url specified by advertiser to send the lead." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebhookDelivery/payloadSchemaVersion> ;
    sh:name "payload schema version" ;
    sh:description "The schema version that this delivery instance will use." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Travel Asset
googleads:DynamicTravelAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicTravelAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/originName> ;
    sh:name "origin name" ;
    sh:description "Origin name, for example, London." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/formattedPrice> ;
    sh:name "formatted price" ;
    sh:description "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/title> ;
    sh:name "title" ;
    sh:description "Required. Title, for example, Book your train ticket. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/originId> ;
    sh:name "origin id" ;
    sh:description "Origin ID which can be any sequence of letters and digits. The ID sequence (destination ID + origin ID) must be unique." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/similarDestinationIds> ;
    sh:name "similar destination ids" ;
    sh:description "Similar destination IDs, for example, NYC." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/salePrice> ;
    sh:name "sale price" ;
    sh:description "Sale price which can be a number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'price' field." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/formattedSalePrice> ;
    sh:name "formatted sale price" ;
    sh:description "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/destinationId> ;
    sh:name "destination id" ;
    sh:description "Required. Destination ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/contextualKeywords> ;
    sh:name "contextual keywords" ;
    sh:description "Contextual keywords, for example, Paris trains." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/category> ;
    sh:name "category" ;
    sh:description "Category, for example, Express." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/destinationName> ;
    sh:name "destination name" ;
    sh:description "Destination name, for example, Paris." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/destinationAddress> ;
    sh:name "destination address" ;
    sh:description "Destination address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/price> ;
    sh:name "price" ;
    sh:description "Price which can be a number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicTravelAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Business Message Asset
googleads:BusinessMessageAssetShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessMessageAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageAsset/whatsappInfo> ;
    sh:name "whatsapp info" ;
    sh:description "Whatsapp." ;
    sh:node googleads:WhatsappBusinessMessageInfoShape ;
    sh:class googleads:WhatsappBusinessMessageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageAsset/zaloInfo> ;
    sh:name "zalo info" ;
    sh:description "Zalo." ;
    sh:node googleads:ZaloBusinessMessageInfoShape ;
    sh:class googleads:ZaloBusinessMessageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageAsset/starterMessage> ;
    sh:name "starter message" ;
    sh:description "Required. A welcome message to prompt the user to initiate a conversation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageAsset/messageProvider> ;
    sh:name "message provider" ;
    sh:description "Required. Message provider of the business message asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WHATSAPP" "FACEBOOK_MESSENGER" "ZALO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageAsset/callToAction> ;
    sh:name "call to action" ;
    sh:description "A call to action for the business message asset." ;
    sh:node googleads:BusinessMessageCallToActionInfoShape ;
    sh:class googleads:BusinessMessageCallToActionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageAsset/facebookMessengerInfo> ;
    sh:name "facebook messenger info" ;
    sh:description "Facebook Messenger." ;
    sh:node googleads:FacebookMessengerBusinessMessageInfoShape ;
    sh:class googleads:FacebookMessengerBusinessMessageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Whatsapp Business Message Info
googleads:WhatsappBusinessMessageInfoShape a sh:NodeShape ;
  sh:targetClass googleads:WhatsappBusinessMessageInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WhatsappBusinessMessageInfo/countryCode> ;
    sh:name "country code" ;
    sh:description "Required. Two-letter country code of the phone number. Examples: 'US', 'us'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WhatsappBusinessMessageInfo/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "Required. Whatsapp phone number of the business. Examples: '1234567890', '(123)456-7890'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Zalo Business Message Info
googleads:ZaloBusinessMessageInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ZaloBusinessMessageInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ZaloBusinessMessageInfo/oaId> ;
    sh:name "oa id" ;
    sh:description "Zalo Official Account ID of the advertiser." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ZaloBusinessMessageInfo/customName> ;
    sh:name "custom name" ;
    sh:description "Custom name generated by the advertiser for their Zalo Account. These names will usually be registered brands or trademarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Business Message Call To Action Info
googleads:BusinessMessageCallToActionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessMessageCallToActionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageCallToActionInfo/callToActionSelection> ;
    sh:name "call to action selection" ;
    sh:description "Required. Pre-defined call to action text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPLY_NOW" "BOOK_NOW" "CONTACT_US" "GET_INFO" "GET_OFFER" "GET_QUOTE" "GET_STARTED" "LEARN_MORE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessMessageCallToActionInfo/callToActionDescription> ;
    sh:name "call to action description" ;
    sh:description "Required. Text providing a clear value proposition of what users expect once they take the action. Examples: 'Message us for a quote', 'Ask our expert team'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Facebook Messenger Business Message Info
googleads:FacebookMessengerBusinessMessageInfoShape a sh:NodeShape ;
  sh:targetClass googleads:FacebookMessengerBusinessMessageInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FacebookMessengerBusinessMessageInfo/pageName> ;
    sh:name "page name" ;
    sh:description "Required. Facebook page name used for starting a chat on Facebook Messenger." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Promotion Asset
googleads:PromotionAssetShape a sh:NodeShape ;
  sh:targetClass googleads:PromotionAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/promotionBarcodeInfo> ;
    sh:name "promotion barcode info" ;
    sh:description "Barcode info used to generate promotion barcode for user to be eligible for the promotion." ;
    sh:node googleads:PromotionBarcodeInfoShape ;
    sh:class googleads:PromotionBarcodeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/endDate> ;
    sh:name "end date" ;
    sh:description "Last date of when this asset is effective and still serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/occasion> ;
    sh:name "occasion" ;
    sh:description "The occasion the promotion was intended for. If an occasion is set, the redemption window will need to fall within the date range associated with the occasion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW_YEARS" "CHINESE_NEW_YEAR" "VALENTINES_DAY" "EASTER" "MOTHERS_DAY" "FATHERS_DAY" "LABOR_DAY" "BACK_TO_SCHOOL" "HALLOWEEN" "BLACK_FRIDAY" "CYBER_MONDAY" "CHRISTMAS" "BOXING_DAY" "INDEPENDENCE_DAY" "NATIONAL_DAY" "END_OF_SEASON" "WINTER_SALE" "SUMMER_SALE" "FALL_SALE" "SPRING_SALE" "RAMADAN" "EID_AL_FITR" "EID_AL_ADHA" "SINGLES_DAY" "WOMENS_DAY" "HOLI" "PARENTS_DAY" "ST_NICHOLAS_DAY" "CARNIVAL" "EPIPHANY" "ROSH_HASHANAH" "PASSOVER" "HANUKKAH" "DIWALI" "NAVRATRI" "SONGKRAN" "YEAR_END_GIFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/promotionCode> ;
    sh:name "promotion code" ;
    sh:description "A code the user should use in order to be eligible for the promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/startDate> ;
    sh:name "start date" ;
    sh:description "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/adScheduleTargets> ;
    sh:name "ad schedule targets" ;
    sh:description "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total." ;
    sh:node googleads:AdScheduleInfoShape ;
    sh:class googleads:AdScheduleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/redemptionEndDate> ;
    sh:name "redemption end date" ;
    sh:description "Last date of when the promotion is eligible to be redeemed, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/moneyAmountOff> ;
    sh:name "money amount off" ;
    sh:description "Money amount off for discount in the promotion. Either this or percent_off is required." ;
    sh:node googleads:CommonMoneyShape ;
    sh:class googleads:CommonMoney ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/discountModifier> ;
    sh:name "discount modifier" ;
    sh:description "A modifier for qualification of the discount." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UP_TO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/promotionQrCodeInfo> ;
    sh:name "promotion qr code info" ;
    sh:description "QR code info used to generate promotion QR code for user to be eligible for the promotion." ;
    sh:node googleads:PromotionQrCodeInfoShape ;
    sh:class googleads:PromotionQrCodeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/ordersOverAmount> ;
    sh:name "orders over amount" ;
    sh:description "The amount the total order needs to be for the user to be eligible for the promotion." ;
    sh:node googleads:CommonMoneyShape ;
    sh:class googleads:CommonMoney ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/promotionTarget> ;
    sh:name "promotion target" ;
    sh:description "Required. A freeform description of what the promotion is targeting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/languageCode> ;
    sh:name "language code" ;
    sh:description "The language of the promotion. Represented as BCP 47 language tag." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/percentOff> ;
    sh:name "percent off" ;
    sh:description "Percentage off discount in the promotion. 1,000,000 = 100%. Either this or money_amount_off is required." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/termsAndConditionsUri> ;
    sh:name "terms and conditions uri" ;
    sh:description "URI to the terms and conditions of the promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/redemptionStartDate> ;
    sh:name "redemption start date" ;
    sh:description "Start date of when the promotion is eligible to be redeemed, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionAsset/termsAndConditionsText> ;
    sh:name "terms and conditions text" ;
    sh:description "Terms and conditions of the promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Promotion Barcode Info
googleads:PromotionBarcodeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:PromotionBarcodeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionBarcodeInfo/type> ;
    sh:name "type" ;
    sh:description "Barcode type used to generate barcode with the correct format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AZTEC" "CODABAR" "CODE39" "CODE128" "DATA_MATRIX" "EAN8" "EAN13" "ITF" "PDF417" "UPC_A" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionBarcodeInfo/barcodeContent> ;
    sh:name "barcode content" ;
    sh:description "Promotion message to be encoded in the barcode." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Common Money
googleads:CommonMoneyShape a sh:NodeShape ;
  sh:targetClass googleads:CommonMoney ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMoney/amountMicros> ;
    sh:name "amount micros" ;
    sh:description "Amount in micros. One million is equivalent to one unit." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMoney/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Three-character ISO 4217 currency code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Promotion Qr Code Info
googleads:PromotionQrCodeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:PromotionQrCodeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PromotionQrCodeInfo/qrCodeContent> ;
    sh:name "qr code content" ;
    sh:description "Promotion message to be encoded in the QR code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Call To Action Asset
googleads:CallToActionAssetShape a sh:NodeShape ;
  sh:targetClass googleads:CallToActionAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallToActionAsset/callToAction> ;
    sh:name "call to action" ;
    sh:description "Call to action." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LEARN_MORE" "GET_QUOTE" "APPLY_NOW" "SIGN_UP" "CONTACT_US" "SUBSCRIBE" "DOWNLOAD" "BOOK_NOW" "SHOP_NOW" "BUY_NOW" "DONATE_NOW" "ORDER_NOW" "PLAY_NOW" "SEE_MORE" "START_NOW" "VISIT_SITE" "WATCH_NOW" ) ;
  ] .

# Shape for Location Asset
googleads:LocationAssetShape a sh:NodeShape ;
  sh:targetClass googleads:LocationAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationAsset/locationOwnershipType> ;
    sh:name "location ownership type" ;
    sh:description "The type of location ownership. If the type is BUSINESS_OWNER, it will be served as a location extension. If the type is AFFILIATE, it will be served as an affiliate location." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BUSINESS_OWNER" "AFFILIATE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationAsset/placeId> ;
    sh:name "place id" ;
    sh:description "Place IDs uniquely identify a place in the Google Places database and on Google Maps. This field is unique for a given customer ID and asset type. See https://developers.google.com/places/web-service/place-id to learn more about Place ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationAsset/businessProfileLocations> ;
    sh:name "business profile locations" ;
    sh:description "The list of business locations for the customer. This will only be returned if the Location Asset is syncing from the Business Profile account. It is possible to have multiple Business Profile listings under the same account that point to the same Place ID." ;
    sh:node googleads:BusinessProfileLocationShape ;
    sh:class googleads:BusinessProfileLocation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Business Profile Location
googleads:BusinessProfileLocationShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessProfileLocation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocation/storeCode> ;
    sh:name "store code" ;
    sh:description "Business Profile store code of this location. This is synced from the Business Profile account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocation/labels> ;
    sh:name "labels" ;
    sh:description "Advertiser specified label for the location on the Business Profile account. This is synced from the Business Profile account." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocation/listingId> ;
    sh:name "listing id" ;
    sh:description "Listing ID of this Business Profile location. This is synced from the linked Business Profile account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for You Tube Video List Asset
googleads:YouTubeVideoListAssetShape a sh:NodeShape ;
  sh:targetClass googleads:YouTubeVideoListAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoListAsset/youtubeVideos> ;
    sh:name "youtube videos" ;
    sh:description "List of videos. Each is a reference to a YouTube video asset. Minimum of 2 videos required and maximum of 5 allowed." ;
    sh:node googleads:AdVideoAssetShape ;
    sh:class googleads:AdVideoAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Youtube Video Asset
googleads:YoutubeVideoAssetShape a sh:NodeShape ;
  sh:targetClass googleads:YoutubeVideoAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YoutubeVideoAsset/youtubeVideoTitle> ;
    sh:name "youtube video title" ;
    sh:description "YouTube video title." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YoutubeVideoAsset/youtubeVideoId> ;
    sh:name "youtube video id" ;
    sh:description "YouTube video id. This is the 11 character string value used in the YouTube video URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Real Estate Asset
googleads:DynamicRealEstateAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicRealEstateAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/listingName> ;
    sh:name "listing name" ;
    sh:description "Required. Listing name, for example, Boulevard Bungalow. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/similarListingIds> ;
    sh:name "similar listing ids" ;
    sh:description "Similar listing IDs." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/listingType> ;
    sh:name "listing type" ;
    sh:description "Listing type, for example, For sale." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/address> ;
    sh:name "address" ;
    sh:description "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/cityName> ;
    sh:name "city name" ;
    sh:description "City name, for example, Mountain View, California." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/propertyType> ;
    sh:name "property type" ;
    sh:description "Property type, for example, House." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/price> ;
    sh:name "price" ;
    sh:description "Price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 200,000.00 USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/formattedPrice> ;
    sh:name "formatted price" ;
    sh:description "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $200,000.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/contextualKeywords> ;
    sh:name "contextual keywords" ;
    sh:description "Contextual keywords, for example, For sale; Houses for sale." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/listingId> ;
    sh:name "listing id" ;
    sh:description "Required. Listing ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicRealEstateAsset/description> ;
    sh:name "description" ;
    sh:description "Description, for example, 3 beds, 2 baths, 1568 sq. ft." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Media Bundle Asset
googleads:MediaBundleAssetShape a sh:NodeShape ;
  sh:targetClass googleads:MediaBundleAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaBundleAsset/data> ;
    sh:name "data" ;
    sh:description "Media bundle (ZIP file) asset data. The format of the uploaded ZIP file depends on the ad field where it will be used. For more information on the format, see the documentation of the ad field where you plan on using the MediaBundleAsset. This field is mutate only." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Local Asset
googleads:DynamicLocalAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicLocalAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/salePrice> ;
    sh:name "sale price" ;
    sh:description "Sale price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'price' field." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/formattedSalePrice> ;
    sh:name "formatted sale price" ;
    sh:description "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/dealName> ;
    sh:name "deal name" ;
    sh:description "Required. Deal name, for example, 50% off at Mountain View Grocers. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/formattedPrice> ;
    sh:name "formatted price" ;
    sh:description "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/subtitle> ;
    sh:name "subtitle" ;
    sh:description "Subtitle, for example, Groceries." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/contextualKeywords> ;
    sh:name "contextual keywords" ;
    sh:description "Contextual keywords, for example, Save groceries coupons." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/description> ;
    sh:name "description" ;
    sh:description "Description, for example, Save on your weekly bill." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/dealId> ;
    sh:name "deal id" ;
    sh:description "Required. Deal ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/address> ;
    sh:name "address" ;
    sh:description "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/category> ;
    sh:name "category" ;
    sh:description "Category, for example, Food." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/similarDealIds> ;
    sh:name "similar deal ids" ;
    sh:description "Similar deal IDs, for example, 1275." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/price> ;
    sh:name "price" ;
    sh:description "Price which can be a number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicLocalAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Page Feed Asset
googleads:PageFeedAssetShape a sh:NodeShape ;
  sh:targetClass googleads:PageFeedAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PageFeedAsset/labels> ;
    sh:name "labels" ;
    sh:description "Labels used to group the page urls." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PageFeedAsset/pageUrl> ;
    sh:name "page url" ;
    sh:description "Required. The webpage that advertisers want to target." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Text Asset
googleads:TextAssetShape a sh:NodeShape ;
  sh:targetClass googleads:TextAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TextAsset/text> ;
    sh:name "text" ;
    sh:description "Text content of the text asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Call Asset
googleads:CallAssetShape a sh:NodeShape ;
  sh:targetClass googleads:CallAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallAsset/callConversionReportingState> ;
    sh:name "call conversion reporting state" ;
    sh:description "Indicates whether this CallAsset should use its own call conversion setting, follow the account level setting, or disable call conversion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISABLED" "USE_ACCOUNT_LEVEL_CALL_CONVERSION_ACTION" "USE_RESOURCE_LEVEL_CALL_CONVERSION_ACTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallAsset/countryCode> ;
    sh:name "country code" ;
    sh:description "Required. Two-letter country code of the phone number. Examples: 'US', 'us'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallAsset/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "Required. The advertiser's raw phone number. Examples: '1234567890', '(123)456-7890'" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallAsset/callConversionAction> ;
    sh:name "call conversion action" ;
    sh:description "The conversion action to attribute a call conversion to. If not set, the default conversion action is used. This field only has effect if call_conversion_reporting_state is set to USE_RESOURCE_LEVEL_CALL_CONVERSION_ACTION." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallAsset/adScheduleTargets> ;
    sh:name "ad schedule targets" ;
    sh:description "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total." ;
    sh:node googleads:AdScheduleInfoShape ;
    sh:class googleads:AdScheduleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Dynamic Hotels And Rentals Asset
googleads:DynamicHotelsAndRentalsAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicHotelsAndRentalsAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/price> ;
    sh:name "price" ;
    sh:description "Price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/starRating> ;
    sh:name "star rating" ;
    sh:description "Star rating. Must be a number between 1 to 5, inclusive." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/destinationName> ;
    sh:name "destination name" ;
    sh:description "Destination name, for example, Downtown Mountain View." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/category> ;
    sh:name "category" ;
    sh:description "Category, for example, Hotel suite." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/address> ;
    sh:name "address" ;
    sh:description "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/propertyName> ;
    sh:name "property name" ;
    sh:description "Required. Property name, for example, Mountain View Hotel. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/propertyId> ;
    sh:name "property id" ;
    sh:description "Required. Property ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/contextualKeywords> ;
    sh:name "contextual keywords" ;
    sh:description "Contextual keywords, for example, Mountain View \"Hotels\", South Bay hotels." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/description> ;
    sh:name "description" ;
    sh:description "Description, for example, Close to SJC Airport." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/similarPropertyIds> ;
    sh:name "similar property ids" ;
    sh:description "Similar property IDs." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/salePrice> ;
    sh:name "sale price" ;
    sh:description "ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'price' field." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/formattedSalePrice> ;
    sh:name "formatted sale price" ;
    sh:description "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicHotelsAndRentalsAsset/formattedPrice> ;
    sh:name "formatted price" ;
    sh:description "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Flights Asset
googleads:DynamicFlightsAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicFlightsAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/originName> ;
    sh:name "origin name" ;
    sh:description "Origin name, for example, London." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/formattedPrice> ;
    sh:name "formatted price" ;
    sh:description "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/flightSalePrice> ;
    sh:name "flight sale price" ;
    sh:description "Flight sale price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'flight_price' field." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/similarDestinationIds> ;
    sh:name "similar destination ids" ;
    sh:description "Similar destination IDs, for example, PAR,LON." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/formattedSalePrice> ;
    sh:name "formatted sale price" ;
    sh:description "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/originId> ;
    sh:name "origin id" ;
    sh:description "Origin ID which can be any sequence of letters and digits. The ID sequence (destination ID + origin ID) must be unique." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/flightDescription> ;
    sh:name "flight description" ;
    sh:description "Required. Flight description, for example, Book your ticket. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/destinationId> ;
    sh:name "destination id" ;
    sh:description "Required. Destination ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/flightPrice> ;
    sh:name "flight price" ;
    sh:description "Flight price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/destinationName> ;
    sh:name "destination name" ;
    sh:description "Destination name, for example, Paris." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicFlightsAsset/customMapping> ;
    sh:name "custom mapping" ;
    sh:description "A custom field which can be multiple key to values mapping separated by delimiters (\",\", \"|\" and \":\"), in the forms of \": , , ... , | : , ... , | ... | : , ... ,\" for example, wifi: most | aircraft: 320, 77W | flights: 42 | legroom: 32\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Property Asset
googleads:HotelPropertyAssetShape a sh:NodeShape ;
  sh:targetClass googleads:HotelPropertyAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelPropertyAsset/hotelAddress> ;
    sh:name "hotel address" ;
    sh:description "Address of the hotel. Read-only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelPropertyAsset/hotelName> ;
    sh:name "hotel name" ;
    sh:description "Name of the hotel. Read-only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelPropertyAsset/placeId> ;
    sh:name "place id" ;
    sh:description "Place IDs uniquely identify a place in the Google Places database and on Google Maps. See https://developers.google.com/places/web-service/place-id to learn more." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Custom Asset
googleads:DynamicCustomAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicCustomAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/price> ;
    sh:name "price" ;
    sh:description "Price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 20,000.00 USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/itemSubtitle> ;
    sh:name "item subtitle" ;
    sh:description "Item subtitle, for example, At your Mountain View dealership." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/similarIds> ;
    sh:name "similar ids" ;
    sh:description "Similar IDs." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/itemTitle> ;
    sh:name "item title" ;
    sh:description "Required. Item title, for example, Mid-size sedan. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/itemCategory> ;
    sh:name "item category" ;
    sh:description "Item category, for example, Sedans." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/contextualKeywords> ;
    sh:name "contextual keywords" ;
    sh:description "Contextual keywords, for example, Sedans, 4 door sedans." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/itemDescription> ;
    sh:name "item description" ;
    sh:description "Item description, for example, Best selling mid-size car." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/id> ;
    sh:name "id" ;
    sh:description "Required. ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag, for example, sedan. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/salePrice> ;
    sh:name "sale price" ;
    sh:description "Sale price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 15,000.00 USD. Must be less than the 'price' field." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/formattedSalePrice> ;
    sh:name "formatted sale price" ;
    sh:description "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $15,000.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/itemAddress> ;
    sh:name "item address" ;
    sh:description "Item address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/id2> ;
    sh:name "id2" ;
    sh:description "ID2 which can be any sequence of letters and digits, for example, red. ID sequence (ID + ID2) must be unique." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicCustomAsset/formattedPrice> ;
    sh:name "formatted price" ;
    sh:description "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $20,000.00." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Callout Asset
googleads:HotelCalloutAssetShape a sh:NodeShape ;
  sh:targetClass googleads:HotelCalloutAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCalloutAsset/text> ;
    sh:name "text" ;
    sh:description "Required. The text of the hotel callout asset. The length of this string should be between 1 and 25, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCalloutAsset/languageCode> ;
    sh:name "language code" ;
    sh:description "Required. The language of the hotel callout. Represented as BCP 47 language tag." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Field Type Policy Summary
googleads:AssetFieldTypePolicySummaryShape a sh:NodeShape ;
  sh:targetClass googleads:AssetFieldTypePolicySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetFieldTypePolicySummary/policySummaryInfo> ;
    sh:name "policy summary info" ;
    sh:description "Output only. Policy summary." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetPolicySummaryShape ;
    sh:class googleads:AssetPolicySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetFieldTypePolicySummary/assetSource> ;
    sh:name "asset source" ;
    sh:description "Output only. Source of this asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetFieldTypePolicySummary/assetFieldType> ;
    sh:name "asset field type" ;
    sh:description "Output only. FieldType of this asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] .

# Shape for Asset Policy Summary
googleads:AssetPolicySummaryShape a sh:NodeShape ;
  sh:targetClass googleads:AssetPolicySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetPolicySummary/policyTopicEntries> ;
    sh:name "policy topic entries" ;
    sh:description "Output only. The list of policy findings for this asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:PolicyTopicEntryShape ;
    sh:class googleads:PolicyTopicEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetPolicySummary/reviewStatus> ;
    sh:name "review status" ;
    sh:description "Output only. Where in the review process this asset is." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REVIEW_IN_PROGRESS" "REVIEWED" "UNDER_APPEAL" "ELIGIBLE_MAY_SERVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetPolicySummary/approvalStatus> ;
    sh:name "approval status" ;
    sh:description "Output only. The overall approval status of this asset, calculated based on the status of its individual policy topic entries." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISAPPROVED" "APPROVED_LIMITED" "APPROVED" "AREA_OF_INTEREST_ONLY" ) ;
  ] .

# Shape for Price Asset
googleads:PriceAssetShape a sh:NodeShape ;
  sh:targetClass googleads:PriceAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceAsset/languageCode> ;
    sh:name "language code" ;
    sh:description "Required. The language of the price asset. Represented as BCP 47 language tag." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceAsset/type> ;
    sh:name "type" ;
    sh:description "Required. The type of the price asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BRANDS" "EVENTS" "LOCATIONS" "NEIGHBORHOODS" "PRODUCT_CATEGORIES" "PRODUCT_TIERS" "SERVICES" "SERVICE_CATEGORIES" "SERVICE_TIERS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceAsset/priceQualifier> ;
    sh:name "price qualifier" ;
    sh:description "The price qualifier of the price asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "FROM" "UP_TO" "AVERAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceAsset/priceOfferings> ;
    sh:name "price offerings" ;
    sh:description "The price offerings of the price asset. The size of this collection should be between 3 and 8, inclusive." ;
    sh:node googleads:PriceOfferingShape ;
    sh:class googleads:PriceOffering ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Price Offering
googleads:PriceOfferingShape a sh:NodeShape ;
  sh:targetClass googleads:PriceOffering ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceOffering/header> ;
    sh:name "header" ;
    sh:description "Required. The header of the price offering. The length of this string should be between 1 and 25, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceOffering/finalMobileUrl> ;
    sh:name "final mobile url" ;
    sh:description "The final mobile URL after all cross domain redirects." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceOffering/description> ;
    sh:name "description" ;
    sh:description "Required. The description of the price offering. The length of this string should be between 1 and 25, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceOffering/price> ;
    sh:name "price" ;
    sh:description "Required. The price value of the price offering." ;
    sh:node googleads:CommonMoneyShape ;
    sh:class googleads:CommonMoney ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceOffering/unit> ;
    sh:name "unit" ;
    sh:description "The price unit of the price offering." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PER_HOUR" "PER_DAY" "PER_WEEK" "PER_MONTH" "PER_YEAR" "PER_NIGHT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PriceOffering/finalUrl> ;
    sh:name "final url" ;
    sh:description "Required. The final URL after all cross domain redirects." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Image Asset
googleads:ImageAssetShape a sh:NodeShape ;
  sh:targetClass googleads:ImageAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAsset/fileSize> ;
    sh:name "file size" ;
    sh:description "File size of the image asset in bytes." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAsset/data> ;
    sh:name "data" ;
    sh:description "The raw bytes data of an image. This field is mutate only." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAsset/fullSize> ;
    sh:name "full size" ;
    sh:description "Metadata for this image at its original size." ;
    sh:node googleads:ImageDimensionShape ;
    sh:class googleads:ImageDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageAsset/mimeType> ;
    sh:name "mime type" ;
    sh:description "MIME type of the image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IMAGE_JPEG" "IMAGE_GIF" "IMAGE_PNG" "FLASH" "TEXT_HTML" "PDF" "MSWORD" "MSEXCEL" "RTF" "AUDIO_WAV" "AUDIO_MP3" "HTML5_AD_ZIP" ) ;
  ] .

# Shape for Image Dimension
googleads:ImageDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:ImageDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageDimension/heightPixels> ;
    sh:name "height pixels" ;
    sh:description "Height of the image." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageDimension/widthPixels> ;
    sh:name "width pixels" ;
    sh:description "Width of the image." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ImageDimension/url> ;
    sh:name "url" ;
    sh:description "A URL that returns the image with this height and width." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Education Asset
googleads:DynamicEducationAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicEducationAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/androidAppLink> ;
    sh:name "android app link" ;
    sh:description "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image url, for example, http://www.example.com/image.png. The image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/address> ;
    sh:name "address" ;
    sh:description "School address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/iosAppLink> ;
    sh:name "ios app link" ;
    sh:description "iOS deep link, for example, exampleApp://content/page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/schoolName> ;
    sh:name "school name" ;
    sh:description "School name, for example, Mountain View School of Nursing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/locationId> ;
    sh:name "location id" ;
    sh:description "Location ID which can be any sequence of letters and digits and must be unique." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/programId> ;
    sh:name "program id" ;
    sh:description "Required. Program ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/similarProgramIds> ;
    sh:name "similar program ids" ;
    sh:description "Similar program IDs." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/iosAppStoreId> ;
    sh:name "ios app store id" ;
    sh:description "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/programName> ;
    sh:name "program name" ;
    sh:description "Required. Program name, for example, Nursing. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/thumbnailImageUrl> ;
    sh:name "thumbnail image url" ;
    sh:description "Thumbnail image url, for example, http://www.example.com/thumbnail.png. The thumbnail image will not be uploaded as image asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/subject> ;
    sh:name "subject" ;
    sh:description "Subject of study, for example, Health." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/contextualKeywords> ;
    sh:name "contextual keywords" ;
    sh:description "Contextual keywords, for example, Nursing certification, Health, Mountain View." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicEducationAsset/programDescription> ;
    sh:name "program description" ;
    sh:description "Program description, for example, Nursing Certification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Structured Snippet Asset
googleads:StructuredSnippetAssetShape a sh:NodeShape ;
  sh:targetClass googleads:StructuredSnippetAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StructuredSnippetAsset/header> ;
    sh:name "header" ;
    sh:description "Required. The header of the snippet. This string should be one of the predefined values at https://developers.google.com/google-ads/api/reference/data/structured-snippet-headers" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StructuredSnippetAsset/values> ;
    sh:name "values" ;
    sh:description "Required. The values in the snippet. The size of this collection should be between 3 and 10, inclusive. The length of each value should be between 1 and 25 characters, inclusive." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Mobile App Asset
googleads:MobileAppAssetShape a sh:NodeShape ;
  sh:targetClass googleads:MobileAppAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppAsset/linkText> ;
    sh:name "link text" ;
    sh:description "Required. The visible text displayed when the link is rendered in an ad. The length of this string should be between 1 and 25, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppAsset/startDate> ;
    sh:name "start date" ;
    sh:description "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppAsset/endDate> ;
    sh:name "end date" ;
    sh:description "Last date of when this asset is effective and still serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppAsset/appId> ;
    sh:name "app id" ;
    sh:description "Required. A string that uniquely identifies a mobile application. It should just contain the platform native id, like \"com.android.ebay\" for Android or \"12345689\" for iOS." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppAsset/appStore> ;
    sh:name "app store" ;
    sh:description "Required. The application store that distributes this specific app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPLE_APP_STORE" "GOOGLE_APP_STORE" ) ;
  ] .

# Shape for Demand Gen Carousel Card Asset
googleads:DemandGenCarouselCardAssetShape a sh:NodeShape ;
  sh:targetClass googleads:DemandGenCarouselCardAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselCardAsset/squareMarketingImageAsset> ;
    sh:name "square marketing image asset" ;
    sh:description "Asset resource name of the associated square marketing image. This and/or a marketing image asset is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselCardAsset/portraitMarketingImageAsset> ;
    sh:name "portrait marketing image asset" ;
    sh:description "Asset resource name of the associated 4:5 portrait marketing image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselCardAsset/callToActionText> ;
    sh:name "call to action text" ;
    sh:description "Call to action text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselCardAsset/marketingImageAsset> ;
    sh:name "marketing image asset" ;
    sh:description "Asset resource name of the associated 1.91:1 marketing image. This and/or square marketing image asset is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DemandGenCarouselCardAsset/headline> ;
    sh:name "headline" ;
    sh:description "Required. Headline of the carousel card." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Book On Google Asset
googleads:BookOnGoogleAssetShape a sh:NodeShape ;
  sh:targetClass googleads:BookOnGoogleAsset .

# Shape for Callout Asset
googleads:CalloutAssetShape a sh:NodeShape ;
  sh:targetClass googleads:CalloutAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CalloutAsset/startDate> ;
    sh:name "start date" ;
    sh:description "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CalloutAsset/endDate> ;
    sh:name "end date" ;
    sh:description "Last date of when this asset is effective and still serving, in yyyy-MM-dd format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CalloutAsset/adScheduleTargets> ;
    sh:name "ad schedule targets" ;
    sh:description "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total." ;
    sh:node googleads:AdScheduleInfoShape ;
    sh:class googleads:AdScheduleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CalloutAsset/calloutText> ;
    sh:name "callout text" ;
    sh:description "Required. The callout text. The length of this string should be between 1 and 25, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Coverage
googleads:AssetCoverageShape a sh:NodeShape ;
  sh:targetClass googleads:AssetCoverage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetCoverage/adStrengthActionItems> ;
    sh:name "ad strength action items" ;
    sh:description "Output only. A list of action items to improve the ad strength of an asset group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdStrengthActionItemShape ;
    sh:class googleads:AdStrengthActionItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Asset Field Type View
googleads:AssetFieldTypeViewShape a sh:NodeShape ;
  sh:targetClass googleads:AssetFieldTypeView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetFieldTypeView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the asset field type view. Asset field type view resource names have the form: `customers/{customer_id}/assetFieldTypeViews/{field_type}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetFieldTypeView/fieldType> ;
    sh:name "field type" ;
    sh:description "Output only. The asset field type of the asset field type view." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] .

# Shape for Asset Group
googleads:AssetGroupShape a sh:NodeShape ;
  sh:targetClass googleads:AssetGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the asset group. Asset group resource names have the form: `customers/{customer_id}/assetGroups/{asset_group_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/finalUrls> ;
    sh:name "final urls" ;
    sh:description "A list of final URLs after all cross domain redirects. In performance max, by default, the urls are eligible for expansion unless opted out." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/adStrength> ;
    sh:name "ad strength" ;
    sh:description "Output only. Overall ad strength of this asset group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "NO_ADS" "POOR" "AVERAGE" "GOOD" "EXCELLENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "A list of final mobile URLs after all cross domain redirects. In performance max, by default, the urls are eligible for expansion unless opted out." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/googleLocalServicesInfo> ;
    sh:name "google local services info" ;
    sh:description "Local services info of the asset group." ;
    sh:node googleads:GoogleLocalServicesInfoShape ;
    sh:class googleads:GoogleLocalServicesInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/path2> ;
    sh:name "path2" ;
    sh:description "Second part of text that may appear appended to the url displayed in the ad. This field can only be set when path1 is set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. The primary status of the asset group. Provides insights into why an asset group is not serving or not serving optimally." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "NOT_ELIGIBLE" "LIMITED" "PENDING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/assetCoverage> ;
    sh:name "asset coverage" ;
    sh:description "Output only. The asset coverage of this asset group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetCoverageShape ;
    sh:class googleads:AssetCoverage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the asset group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/status> ;
    sh:name "status" ;
    sh:description "The status of the asset group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "PAUSED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign with which this asset group is associated. The asset which is linked to the asset group." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/name> ;
    sh:name "name" ;
    sh:description "Required. Name of the asset group. Required. It must have a minimum length of 1 and maximum length of 128. It must be unique under a campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. Provides reasons into why an asset group is not serving or not serving optimally. It will be empty when the asset group is serving without issues." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ASSET_GROUP_PAUSED" "ASSET_GROUP_REMOVED" "CAMPAIGN_REMOVED" "CAMPAIGN_PAUSED" "CAMPAIGN_PENDING" "CAMPAIGN_ENDED" "ASSET_GROUP_LIMITED" "ASSET_GROUP_DISAPPROVED" "ASSET_GROUP_UNDER_REVIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroup/path1> ;
    sh:name "path1" ;
    sh:description "First part of text that may appear appended to the url displayed in the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Local Services Info
googleads:GoogleLocalServicesInfoShape a sh:NodeShape ;
  sh:targetClass googleads:GoogleLocalServicesInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleLocalServicesInfo/categoryId> ;
    sh:name "category id" ;
    sh:description "Immutable. The local services category associated with this asset group. That is, XCAT format - xcat:service_area_business_plumber. See https://developers.google.com/google-ads/api/data/codes-formats#local-services-category-ids This field cannot be modified after the AssetGroup has been created." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleLocalServicesInfo/callouts> ;
    sh:name "callouts" ;
    sh:description "Callouts selected by the advertiser to show." ;
    sh:node googleads:LocalServicesCalloutShape ;
    sh:class googleads:LocalServicesCallout ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Local Services Callout
googleads:LocalServicesCalloutShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesCallout ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesCallout/calloutId> ;
    sh:name "callout id" ;
    sh:description "Required. The unique ID of the callout." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Group Asset
googleads:AssetGroupAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AssetGroupAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/asset> ;
    sh:name "asset" ;
    sh:description "Immutable. The asset which this asset group asset is linking." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/source> ;
    sh:name "source" ;
    sh:description "Output only. Source of the asset group asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. Provides a list of reasons for why an asset is not serving or not serving at full capacity." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ASSET_LINK_PAUSED" "ASSET_LINK_REMOVED" "ASSET_DISAPPROVED" "ASSET_UNDER_REVIEW" "ASSET_APPROVED_LABELED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/primaryStatusDetails> ;
    sh:name "primary status details" ;
    sh:description "Output only. Provides the details of the primary status and its associated reasons." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetLinkPrimaryStatusDetailsShape ;
    sh:class googleads:AssetLinkPrimaryStatusDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/policySummary> ;
    sh:name "policy summary" ;
    sh:description "Output only. The policy information for this asset group asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:PolicySummaryShape ;
    sh:class googleads:PolicySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. Provides the PrimaryStatus of this asset link. Primary status is meant essentially to differentiate between the plain \"status\" field, which has advertiser set values of enabled, paused, or removed. The primary status takes into account other signals (for assets its mainly policy and quality approvals) to come up with a more comprehensive status to indicate its serving state." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "LIMITED" "NOT_ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Immutable. The asset group which this asset group asset is linking." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the asset group asset. Asset group asset resource name have the form: `customers/{customer_id}/assetGroupAssets/{asset_group_id}~{asset_id}~{field_type}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/fieldType> ;
    sh:name "field type" ;
    sh:description "The description of the placement of the asset within the asset group. For example: HEADLINE, YOUTUBE_VIDEO etc" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAsset/status> ;
    sh:name "status" ;
    sh:description "The status of the link between an asset and asset group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "PAUSED" ) ;
  ] .

# Shape for Policy Summary
googleads:PolicySummaryShape a sh:NodeShape ;
  sh:targetClass googleads:PolicySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicySummary/approvalStatus> ;
    sh:name "approval status" ;
    sh:description "The overall approval status, which is calculated based on the status of its individual policy topic entries." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISAPPROVED" "APPROVED_LIMITED" "APPROVED" "AREA_OF_INTEREST_ONLY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicySummary/policyTopicEntries> ;
    sh:name "policy topic entries" ;
    sh:description "The list of policy findings." ;
    sh:node googleads:PolicyTopicEntryShape ;
    sh:class googleads:PolicyTopicEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PolicySummary/reviewStatus> ;
    sh:name "review status" ;
    sh:description "Where in the review process the resource is." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REVIEW_IN_PROGRESS" "REVIEWED" "UNDER_APPEAL" "ELIGIBLE_MAY_SERVE" ) ;
  ] .

# Shape for Asset Group Asset Combination Data
googleads:AssetGroupAssetCombinationDataShape a sh:NodeShape ;
  sh:targetClass googleads:AssetGroupAssetCombinationData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupAssetCombinationData/assetCombinationServedAssets> ;
    sh:name "asset combination served assets" ;
    sh:description "Output only. Served assets." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetUsageShape ;
    sh:class googleads:AssetUsage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Asset Group Listing Group Filter
googleads:AssetGroupListingGroupFilterShape a sh:NodeShape ;
  sh:targetClass googleads:AssetGroupListingGroupFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the ListingGroupFilter." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/path> ;
    sh:name "path" ;
    sh:description "Output only. The path of dimensions defining this listing group filter." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ListingGroupFilterDimensionPathShape ;
    sh:class googleads:ListingGroupFilterDimensionPath ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/listingSource> ;
    sh:name "listing source" ;
    sh:description "Immutable. The source of listings filtered by this listing group filter." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SHOPPING" "WEBPAGE" "RETAIL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/parentListingGroupFilter> ;
    sh:name "parent listing group filter" ;
    sh:description "Immutable. Resource name of the parent listing group subdivision. Null for the root listing group filter node." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the asset group listing group filter. Asset group listing group filter resource name have the form: `customers/{customer_id}/assetGroupListingGroupFilters/{asset_group_id}~{listing_group_filter_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/caseValue> ;
    sh:name "case value" ;
    sh:description "Dimension value with which this listing group is refining its parent. Undefined for the root group." ;
    sh:node googleads:ListingGroupFilterDimensionShape ;
    sh:class googleads:ListingGroupFilterDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/type> ;
    sh:name "type" ;
    sh:description "Immutable. Type of a listing group filter node." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SUBDIVISION" "UNIT_INCLUDED" "UNIT_EXCLUDED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupListingGroupFilter/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Immutable. The asset group which this asset group listing group filter is part of." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Group Filter Dimension Path
googleads:ListingGroupFilterDimensionPathShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionPath ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionPath/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Output only. The complete path of dimensions through the listing group filter hierarchy (excluding the root node) to this listing group filter." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ListingGroupFilterDimensionShape ;
    sh:class googleads:ListingGroupFilterDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Listing Group Filter Dimension
googleads:ListingGroupFilterDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/productChannel> ;
    sh:name "product channel" ;
    sh:description "Locality of a product offer." ;
    sh:node googleads:ListingGroupFilterDimensionProductChannelShape ;
    sh:class googleads:ListingGroupFilterDimensionProductChannel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/productType> ;
    sh:name "product type" ;
    sh:description "Type of a product offer." ;
    sh:node googleads:ListingGroupFilterDimensionProductTypeShape ;
    sh:class googleads:ListingGroupFilterDimensionProductType ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/productBrand> ;
    sh:name "product brand" ;
    sh:description "Brand of a product offer." ;
    sh:node googleads:ListingGroupFilterDimensionProductBrandShape ;
    sh:class googleads:ListingGroupFilterDimensionProductBrand ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/productCategory> ;
    sh:name "product category" ;
    sh:description "Category of a product offer." ;
    sh:node googleads:ListingGroupFilterDimensionProductCategoryShape ;
    sh:class googleads:ListingGroupFilterDimensionProductCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/productCustomAttribute> ;
    sh:name "product custom attribute" ;
    sh:description "Custom attribute of a product offer." ;
    sh:node googleads:ListingGroupFilterDimensionProductCustomAttributeShape ;
    sh:class googleads:ListingGroupFilterDimensionProductCustomAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/webpage> ;
    sh:name "webpage" ;
    sh:description "Filters for URLs in a page feed and URLs from the advertiser web domain." ;
    sh:node googleads:ListingGroupFilterDimensionWebpageShape ;
    sh:class googleads:ListingGroupFilterDimensionWebpage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/productItemId> ;
    sh:name "product item id" ;
    sh:description "Item id of a product offer." ;
    sh:node googleads:ListingGroupFilterDimensionProductItemIdShape ;
    sh:class googleads:ListingGroupFilterDimensionProductItemId ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/productCondition> ;
    sh:name "product condition" ;
    sh:description "Condition of a product offer." ;
    sh:node googleads:ListingGroupFilterDimensionProductConditionShape ;
    sh:class googleads:ListingGroupFilterDimensionProductCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimension/retailFilterBundle> ;
    sh:name "retail filter bundle" ;
    sh:description "Dimension for Retail Product Tags." ;
    sh:node googleads:ListingGroupFilterDimensionRetailFilterBundleShape ;
    sh:class googleads:ListingGroupFilterDimensionRetailFilterBundle ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Group Filter Dimension Product Channel
googleads:ListingGroupFilterDimensionProductChannelShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionProductChannel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductChannel/channel> ;
    sh:name "channel" ;
    sh:description "Value of the locality." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ONLINE" "LOCAL" ) ;
  ] .

# Shape for Listing Group Filter Dimension Product Type
googleads:ListingGroupFilterDimensionProductTypeShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionProductType ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductType/value> ;
    sh:name "value" ;
    sh:description "Value of the type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductType/level> ;
    sh:name "level" ;
    sh:description "Level of the type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LEVEL1" "LEVEL2" "LEVEL3" "LEVEL4" "LEVEL5" ) ;
  ] .

# Shape for Listing Group Filter Dimension Product Brand
googleads:ListingGroupFilterDimensionProductBrandShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionProductBrand ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductBrand/value> ;
    sh:name "value" ;
    sh:description "String value of the product brand." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Group Filter Dimension Product Category
googleads:ListingGroupFilterDimensionProductCategoryShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionProductCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductCategory/categoryId> ;
    sh:name "category id" ;
    sh:description "ID of the product category. This ID is equivalent to the google_product_category ID as described in this article: https://support.google.com/merchants/answer/6324436" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductCategory/level> ;
    sh:name "level" ;
    sh:description "Indicates the level of the category in the taxonomy." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LEVEL1" "LEVEL2" "LEVEL3" "LEVEL4" "LEVEL5" ) ;
  ] .

# Shape for Listing Group Filter Dimension Product Custom Attribute
googleads:ListingGroupFilterDimensionProductCustomAttributeShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionProductCustomAttribute ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductCustomAttribute/value> ;
    sh:name "value" ;
    sh:description "String value of the product custom attribute." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductCustomAttribute/index> ;
    sh:name "index" ;
    sh:description "Indicates the index of the custom attribute." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INDEX0" "INDEX1" "INDEX2" "INDEX3" "INDEX4" ) ;
  ] .

# Shape for Listing Group Filter Dimension Webpage
googleads:ListingGroupFilterDimensionWebpageShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionWebpage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionWebpage/conditions> ;
    sh:name "conditions" ;
    sh:description "The webpage conditions are case sensitive and these are and-ed together when evaluated for filtering. All the conditions should be of same type. Example1: for URL1 = www.ads.google.com?ocid=1&euid=2 and URL2 = www.ads.google.com?ocid=1 and with \"ocid\" and \"euid\" as url_contains conditions, URL1 will be matched, but URL2 not. Example2 : If URL1 has Label1, Label2 and URL2 has Label2, Label3, then with Label1 and Label2 as custom_label conditions, URL1 will be matched but not URL2. With Label2 as the only custom_label condition then both URL1 and URL2 will be matched." ;
    sh:node googleads:ListingGroupFilterDimensionWebpageConditionShape ;
    sh:class googleads:ListingGroupFilterDimensionWebpageCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Listing Group Filter Dimension Webpage Condition
googleads:ListingGroupFilterDimensionWebpageConditionShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionWebpageCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionWebpageCondition/urlContains> ;
    sh:name "url contains" ;
    sh:description "Filters the URLs in a page feed and the URLs from the advertiser web domain that contain this string." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionWebpageCondition/customLabel> ;
    sh:name "custom label" ;
    sh:description "Filters the URLs in a page feed that have this custom label. A custom label can be added to a campaign by creating an AssetSet of type PAGE_FEED and linking it to the campaign using CampaignAssetSet." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Group Filter Dimension Product Item Id
googleads:ListingGroupFilterDimensionProductItemIdShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionProductItemId ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductItemId/value> ;
    sh:name "value" ;
    sh:description "Value of the id." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Listing Group Filter Dimension Product Condition
googleads:ListingGroupFilterDimensionProductConditionShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionProductCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionProductCondition/condition> ;
    sh:name "condition" ;
    sh:description "Value of the condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW" "REFURBISHED" "USED" ) ;
  ] .

# Shape for Listing Group Filter Dimension Retail Filter Bundle
googleads:ListingGroupFilterDimensionRetailFilterBundleShape a sh:NodeShape ;
  sh:targetClass googleads:ListingGroupFilterDimensionRetailFilterBundle ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingGroupFilterDimensionRetailFilterBundle/sharedSet> ;
    sh:name "shared set" ;
    sh:description "The RetailFilterBundle shared set resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Group Product Group View
googleads:AssetGroupProductGroupViewShape a sh:NodeShape ;
  sh:targetClass googleads:AssetGroupProductGroupView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupProductGroupView/assetGroupListingGroupFilter> ;
    sh:name "asset group listing group filter" ;
    sh:description "Output only. The resource name of the asset group listing group filter." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupProductGroupView/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Output only. The asset group associated with the listing group filter." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupProductGroupView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the asset group product group view. Asset group product group view resource names have the form: `customers/{customer_id}/assetGroupProductGroupViews/{asset_group_id}~{listing_group_filter_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Group Signal
googleads:AssetGroupSignalShape a sh:NodeShape ;
  sh:targetClass googleads:AssetGroupSignal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/localServicesId> ;
    sh:name "local services id" ;
    sh:description "Immutable. The local services signal to be used by the performance max campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LocalServiceIdInfoShape ;
    sh:class googleads:LocalServiceIdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the asset group signal. Asset group signal resource name have the form: `customers/{customer_id}/assetGroupSignals/{asset_group_id}~{signal_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Immutable. The asset group which this asset group signal belongs to." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/audience> ;
    sh:name "audience" ;
    sh:description "Immutable. The audience signal to be used by the performance max campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AudienceInfoShape ;
    sh:class googleads:AudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/verticalAdsItemGroupRuleList> ;
    sh:name "vertical ads item group rule list" ;
    sh:description "Immutable. The list of vertical ads item group rules used to select items from the attached vertical feed. This field links to a SharedSet of type VERTICAL_ADS_ITEM_GROUP_RULE_LIST. The rules within the linked SharedSet define which items from the TRAVEL_FEED AssetSet are eligible to be served. Items that do not match the rules will be excluded. This behavior is different from other signal types, which provide guidance to the optimization engine rather than determining item eligibility." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:VerticalAdsItemGroupRuleListInfoShape ;
    sh:class googleads:VerticalAdsItemGroupRuleListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/searchTheme> ;
    sh:name "search theme" ;
    sh:description "Immutable. The search_theme signal to be used by the performance max campaign. Mutate errors of search_theme criterion includes AssetGroupSignalError.UNSPECIFIED AssetGroupSignalError.UNKNOWN AssetGroupSignalError.TOO_MANY_WORDS AssetGroupSignalError.SEARCH_THEME_POLICY_VIOLATION FieldError.REQUIRED StringFormatError.ILLEGAL_CHARS StringLengthError.TOO_LONG ResourceCountLimitExceededError.RESOURCE_LIMIT" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:SearchThemeInfoShape ;
    sh:class googleads:SearchThemeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/approvalStatus> ;
    sh:name "approval status" ;
    sh:description "Output only. Approval status is the output value for search theme signal after Google ads policy review. When using Audience signal, this field is not used and will be absent." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPROVED" "LIMITED" "DISAPPROVED" "UNDER_REVIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupSignal/disapprovalReasons> ;
    sh:name "disapproval reasons" ;
    sh:description "Output only. Computed for SearchTheme signals. When using Audience signal, this field is not used and will be absent." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] .

# Shape for Local Service Id Info
googleads:LocalServiceIdInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServiceIdInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServiceIdInfo/serviceId> ;
    sh:name "service id" ;
    sh:description "The criterion resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Search Theme Info
googleads:SearchThemeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:SearchThemeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SearchThemeInfo/text> ;
    sh:name "text" ;
    sh:description "Each Search Theme has a value of a simple string, like keywords. There are limits on overall length, allowed characters, and number of words." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Group Top Combination View
googleads:AssetGroupTopCombinationViewShape a sh:NodeShape ;
  sh:targetClass googleads:AssetGroupTopCombinationView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupTopCombinationView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the asset group top combination view. AssetGroup Top Combination view resource names have the form: `\"customers/{customer_id}/assetGroupTopCombinationViews/{asset_group_id}~{asset_combination_category}\"`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetGroupTopCombinationView/assetGroupTopCombinations> ;
    sh:name "asset group top combinations" ;
    sh:description "Output only. The top combinations of assets that served together." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetGroupAssetCombinationDataShape ;
    sh:class googleads:AssetGroupAssetCombinationData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Asset Interaction Target
googleads:AssetInteractionTargetShape a sh:NodeShape ;
  sh:targetClass googleads:AssetInteractionTarget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetInteractionTarget/asset> ;
    sh:name "asset" ;
    sh:description "The asset resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetInteractionTarget/interactionOnThisAsset> ;
    sh:name "interaction on this asset" ;
    sh:description "Only used with CustomerAsset, CampaignAsset and AdGroupAsset metrics. Indicates whether the interaction metrics occurred on the asset itself or a different asset or ad unit." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Set
googleads:AssetSetShape a sh:NodeShape ;
  sh:targetClass googleads:AssetSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/type> ;
    sh:name "type" ;
    sh:description "Required. Immutable. The type of the asset set. Required." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PAGE_FEED" "DYNAMIC_EDUCATION" "MERCHANT_CENTER_FEED" "DYNAMIC_REAL_ESTATE" "DYNAMIC_CUSTOM" "DYNAMIC_HOTELS_AND_RENTALS" "DYNAMIC_FLIGHTS" "DYNAMIC_TRAVEL" "DYNAMIC_LOCAL" "DYNAMIC_JOBS" "LOCATION_SYNC" "BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP" "CHAIN_DYNAMIC_LOCATION_GROUP" "STATIC_LOCATION_GROUP" "HOTEL_PROPERTY" "TRAVEL_FEED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the asset set. Asset set resource names have the form: `customers/{customer_id}/assetSets/{asset_set_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/travelFeedData> ;
    sh:name "travel feed data" ;
    sh:description "Output only. Travel Feed data. Read-only" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetSetTravelFeedDataShape ;
    sh:class googleads:AssetSetTravelFeedData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/locationSet> ;
    sh:name "location set" ;
    sh:description "Location asset set data. This will be used for sync level location set. This can only be set if AssetSet's type is LOCATION_SYNC." ;
    sh:node googleads:LocationSetShape ;
    sh:class googleads:LocationSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/merchantCenterFeed> ;
    sh:name "merchant center feed" ;
    sh:description "Merchant ID and Feed Label from Google Merchant Center." ;
    sh:node googleads:AssetSetMerchantCenterFeedShape ;
    sh:class googleads:AssetSetMerchantCenterFeed ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the asset set." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the asset set. Read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/chainLocationGroup> ;
    sh:name "chain location group" ;
    sh:description "Represents information about a Chain dynamic location group. Only applicable if the sync level AssetSet's type is LOCATION_SYNC and sync source is chain." ;
    sh:node googleads:ChainLocationGroupShape ;
    sh:class googleads:ChainLocationGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/locationGroupParentAssetSetId> ;
    sh:name "location group parent asset set id" ;
    sh:description "Immutable. Parent asset set ID for the asset set where the elements of this asset set come from. For example: the sync level location AssetSet id where the elements in LocationGroup AssetSet come from. This field is required and only applicable for Location Group typed AssetSet." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/hotelPropertyData> ;
    sh:name "hotel property data" ;
    sh:description "Output only. For Performance Max for travel goals campaigns with a Hotel Center account link. Read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetSetHotelPropertyDataShape ;
    sh:class googleads:AssetSetHotelPropertyData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/businessProfileLocationGroup> ;
    sh:name "business profile location group" ;
    sh:description "Business Profile location group asset set data." ;
    sh:node googleads:BusinessProfileLocationGroupShape ;
    sh:class googleads:BusinessProfileLocationGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSet/name> ;
    sh:name "name" ;
    sh:description "Required. Name of the asset set. Required. It must have a minimum length of 1 and maximum length of 128." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Set Travel Feed Data
googleads:AssetSetTravelFeedDataShape a sh:NodeShape ;
  sh:targetClass googleads:AssetSetTravelFeedData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetTravelFeedData/partnerCenterId> ;
    sh:name "partner center id" ;
    sh:description "Output only. The Partner Center ID used for a travel vertical feed, except for Hotel, Vacation Rental, and Things to Do feeds." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetTravelFeedData/travelFeedVerticalType> ;
    sh:name "travel feed vertical type" ;
    sh:description "Output only. Indicates the vertical type of the travel feed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HOTELS" "VACATION_RENTALS" "RENTAL_CARS" "EVENTS" "THINGS_TO_DO" "FLIGHTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetTravelFeedData/hotelCenterAccountId> ;
    sh:name "hotel center account id" ;
    sh:description "Output only. The Hotel Center account ID used for a Hotel or Vacation Rental feed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetTravelFeedData/merchantCenterId> ;
    sh:name "merchant center id" ;
    sh:description "Output only. The Merchant Center account ID used for a Things to Do feed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetTravelFeedData/subsetId> ;
    sh:name "subset id" ;
    sh:description "Output only. Id representing a subset of the travel feed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Location Set
googleads:LocationSetShape a sh:NodeShape ;
  sh:targetClass googleads:LocationSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationSet/chainLocationSet> ;
    sh:name "chain location set" ;
    sh:description "Data used to configure a location on chain set populated with the specified chains." ;
    sh:node googleads:ChainSetShape ;
    sh:class googleads:ChainSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationSet/mapsLocationSet> ;
    sh:name "maps location set" ;
    sh:description "Only set if locations are synced based on selected maps locations" ;
    sh:node googleads:MapsLocationSetShape ;
    sh:class googleads:MapsLocationSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationSet/locationOwnershipType> ;
    sh:name "location ownership type" ;
    sh:description "Required. Immutable. Location Ownership Type (owned location or affiliate location)." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BUSINESS_OWNER" "AFFILIATE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationSet/businessProfileLocationSet> ;
    sh:name "business profile location set" ;
    sh:description "Data used to configure a location set populated from Google Business Profile locations." ;
    sh:node googleads:BusinessProfileLocationSetShape ;
    sh:class googleads:BusinessProfileLocationSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Chain Set
googleads:ChainSetShape a sh:NodeShape ;
  sh:targetClass googleads:ChainSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChainSet/relationshipType> ;
    sh:name "relationship type" ;
    sh:description "Required. Immutable. Relationship type the specified chains have with this advertiser." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AUTO_DEALERS" "GENERAL_RETAILERS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChainSet/chains> ;
    sh:name "chains" ;
    sh:description "Required. A list of chain level filters, all filters are OR'ed together." ;
    sh:node googleads:ChainFilterShape ;
    sh:class googleads:ChainFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Chain Filter
googleads:ChainFilterShape a sh:NodeShape ;
  sh:targetClass googleads:ChainFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChainFilter/chainId> ;
    sh:name "chain id" ;
    sh:description "Required. Used to filter chain locations by chain id. Only chain locations that belong to the specified chain will be in the asset set." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChainFilter/locationAttributes> ;
    sh:name "location attributes" ;
    sh:description "Used to filter chain locations by location attributes. Only chain locations that belong to all of the specified attribute(s) will be in the asset set. If this field is empty, it means no filtering on this field." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Maps Location Set
googleads:MapsLocationSetShape a sh:NodeShape ;
  sh:targetClass googleads:MapsLocationSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MapsLocationSet/mapsLocations> ;
    sh:name "maps locations" ;
    sh:description "Required. A list of maps location info that user manually synced in." ;
    sh:node googleads:MapsLocationInfoShape ;
    sh:class googleads:MapsLocationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Maps Location Info
googleads:MapsLocationInfoShape a sh:NodeShape ;
  sh:targetClass googleads:MapsLocationInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MapsLocationInfo/placeId> ;
    sh:name "place id" ;
    sh:description "Place ID of the Maps location." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Business Profile Location Set
googleads:BusinessProfileLocationSetShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessProfileLocationSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocationSet/labelFilters> ;
    sh:name "label filters" ;
    sh:description "Used to filter Google Business Profile listings by labels. If entries exist in labelFilters, only listings that have any of the labels set are candidates to be synchronized into Assets. If no entries exist in labelFilters, then all listings are candidates for syncing. Label filters are OR'ed together." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocationSet/httpAuthorizationToken> ;
    sh:name "http authorization token" ;
    sh:description "Required. Immutable. The HTTP authorization token used to obtain authorization." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocationSet/emailAddress> ;
    sh:name "email address" ;
    sh:description "Required. Immutable. Email address of a Google Business Profile account or email address of a manager of the Google Business Profile account." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocationSet/listingIdFilters> ;
    sh:name "listing id filters" ;
    sh:description "Used to filter Google Business Profile listings by listing id. If entries exist in listingIdFilters, only listings specified by the filters are candidates to be synchronized into Assets. If no entries exist in listingIdFilters, then all listings are candidates for syncing. Listing ID filters are OR'ed together." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocationSet/businessNameFilter> ;
    sh:name "business name filter" ;
    sh:description "Used to filter Google Business Profile listings by business name. If businessNameFilter is set, only listings with a matching business name are candidates to be sync'd into Assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocationSet/businessAccountId> ;
    sh:name "business account id" ;
    sh:description "Immutable. The account ID of the managed business whose locations are to be used. If this field is not set, then all businesses accessible by the user (specified by the emailAddress) are used." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Asset Set Merchant Center Feed
googleads:AssetSetMerchantCenterFeedShape a sh:NodeShape ;
  sh:targetClass googleads:AssetSetMerchantCenterFeed ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetMerchantCenterFeed/merchantId> ;
    sh:name "merchant id" ;
    sh:description "Required. Merchant ID from Google Merchant Center" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetMerchantCenterFeed/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Optional. Feed Label from Google Merchant Center." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Chain Location Group
googleads:ChainLocationGroupShape a sh:NodeShape ;
  sh:targetClass googleads:ChainLocationGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChainLocationGroup/dynamicChainLocationGroupFilters> ;
    sh:name "dynamic chain location group filters" ;
    sh:description "Used to filter chain locations by chain ids. Only Locations that belong to the specified chain(s) will be in the asset set." ;
    sh:node googleads:ChainFilterShape ;
    sh:class googleads:ChainFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Asset Set Hotel Property Data
googleads:AssetSetHotelPropertyDataShape a sh:NodeShape ;
  sh:targetClass googleads:AssetSetHotelPropertyData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetHotelPropertyData/hotelCenterId> ;
    sh:name "hotel center id" ;
    sh:description "Output only. The hotel center ID of the partner." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetHotelPropertyData/partnerName> ;
    sh:name "partner name" ;
    sh:description "Output only. Name of the hotel partner." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Business Profile Location Group
googleads:BusinessProfileLocationGroupShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessProfileLocationGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileLocationGroup/dynamicBusinessProfileLocationGroupFilter> ;
    sh:name "dynamic business profile location group filter" ;
    sh:description "Filter for dynamic Business Profile location sets." ;
    sh:node googleads:DynamicBusinessProfileLocationGroupFilterShape ;
    sh:class googleads:DynamicBusinessProfileLocationGroupFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Business Profile Location Group Filter
googleads:DynamicBusinessProfileLocationGroupFilterShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicBusinessProfileLocationGroupFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicBusinessProfileLocationGroupFilter/labelFilters> ;
    sh:name "label filters" ;
    sh:description "Used to filter Business Profile locations by label. Only locations that have any of the listed labels will be in the asset set. Label filters are OR'ed together." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicBusinessProfileLocationGroupFilter/businessNameFilter> ;
    sh:name "business name filter" ;
    sh:description "Used to filter Business Profile locations by business name." ;
    sh:node googleads:BusinessProfileBusinessNameFilterShape ;
    sh:class googleads:BusinessProfileBusinessNameFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicBusinessProfileLocationGroupFilter/listingIdFilters> ;
    sh:name "listing id filters" ;
    sh:description "Used to filter Business Profile locations by listing ids." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Business Profile Business Name Filter
googleads:BusinessProfileBusinessNameFilterShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessProfileBusinessNameFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileBusinessNameFilter/businessName> ;
    sh:name "business name" ;
    sh:description "Business name string to use for filtering." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessProfileBusinessNameFilter/filterType> ;
    sh:name "filter type" ;
    sh:description "The type of string matching to use when filtering with business_name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXACT" ) ;
  ] .

# Shape for Asset Set Asset
googleads:AssetSetAssetShape a sh:NodeShape ;
  sh:targetClass googleads:AssetSetAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetAsset/asset> ;
    sh:name "asset" ;
    sh:description "Immutable. The asset which this asset set asset is linking to." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetAsset/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the asset set asset. Asset set asset resource names have the form: `customers/{customer_id}/assetSetAssets/{asset_set_id}~{asset_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetAsset/assetSet> ;
    sh:name "asset set" ;
    sh:description "Immutable. The asset set which this asset set asset is linking to." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetAsset/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the asset set asset. Read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] .

# Shape for Asset Set Type View
googleads:AssetSetTypeViewShape a sh:NodeShape ;
  sh:targetClass googleads:AssetSetTypeView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetTypeView/assetSetType> ;
    sh:name "asset set type" ;
    sh:description "Output only. The asset set type of the asset set type view." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PAGE_FEED" "DYNAMIC_EDUCATION" "MERCHANT_CENTER_FEED" "DYNAMIC_REAL_ESTATE" "DYNAMIC_CUSTOM" "DYNAMIC_HOTELS_AND_RENTALS" "DYNAMIC_FLIGHTS" "DYNAMIC_TRAVEL" "DYNAMIC_LOCAL" "DYNAMIC_JOBS" "LOCATION_SYNC" "BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP" "CHAIN_DYNAMIC_LOCATION_GROUP" "STATIC_LOCATION_GROUP" "HOTEL_PROPERTY" "TRAVEL_FEED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AssetSetTypeView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the asset set type view. Asset set type view resource names have the form: `customers/{customer_id}/assetSetTypeViews/{asset_set_type}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience
googleads:AudienceShape a sh:NodeShape ;
  sh:targetClass googleads:Audience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the audience. Audience names have the form: `customers/{customer_id}/audiences/{audience_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/description> ;
    sh:name "description" ;
    sh:description "Description of this audience." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Immutable. The asset group that this audience is scoped under. Must be set if and only if scope is ASSET_GROUP. Immutable after creation. If an audience with ASSET_GROUP scope is upgraded to CUSTOMER scope, this field will automatically be cleared." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of the audience." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/status> ;
    sh:name "status" ;
    sh:description "Output only. Status of this audience. Indicates whether the audience is enabled or removed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Positive dimensions specifying the audience composition." ;
    sh:node googleads:AudienceDimensionShape ;
    sh:class googleads:AudienceDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/exclusionDimension> ;
    sh:name "exclusion dimension" ;
    sh:description "Negative dimension specifying the audience composition." ;
    sh:node googleads:AudienceExclusionDimensionShape ;
    sh:class googleads:AudienceExclusionDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/name> ;
    sh:name "name" ;
    sh:description "Name of the audience. It should be unique across all audiences within the account. It must have a minimum length of 1 and maximum length of 255. Required when scope is not set or is set to CUSTOMER. Cannot be set or updated when scope is ASSET_GROUP." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Audience/scope> ;
    sh:name "scope" ;
    sh:description "Defines the scope this audience can be used in. By default, the scope is CUSTOMER. Audiences can be created with a scope of ASSET_GROUP for exclusive use by a single asset_group. Scope may change from ASSET_GROUP to CUSTOMER but not from CUSTOMER to ASSET_GROUP." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER" "ASSET_GROUP" ) ;
  ] .

# Shape for Audience Dimension
googleads:AudienceDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:AudienceDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceDimension/householdIncome> ;
    sh:name "household income" ;
    sh:description "Dimension specifying users by their household income." ;
    sh:node googleads:HouseholdIncomeDimensionShape ;
    sh:class googleads:HouseholdIncomeDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceDimension/age> ;
    sh:name "age" ;
    sh:description "Dimension specifying users by their age." ;
    sh:node googleads:AgeDimensionShape ;
    sh:class googleads:AgeDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceDimension/audienceSegments> ;
    sh:name "audience segments" ;
    sh:description "Dimension specifying users by their membership in other audience segments." ;
    sh:node googleads:AudienceSegmentDimensionShape ;
    sh:class googleads:AudienceSegmentDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceDimension/gender> ;
    sh:name "gender" ;
    sh:description "Dimension specifying users by their gender." ;
    sh:node googleads:GenderDimensionShape ;
    sh:class googleads:GenderDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceDimension/parentalStatus> ;
    sh:name "parental status" ;
    sh:description "Dimension specifying users by their parental status." ;
    sh:node googleads:ParentalStatusDimensionShape ;
    sh:class googleads:ParentalStatusDimension ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Household Income Dimension
googleads:HouseholdIncomeDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:HouseholdIncomeDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HouseholdIncomeDimension/incomeRanges> ;
    sh:name "income ranges" ;
    sh:description "Included household income demographic segments." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INCOME_RANGE_0_50" "INCOME_RANGE_50_60" "INCOME_RANGE_60_70" "INCOME_RANGE_70_80" "INCOME_RANGE_80_90" "INCOME_RANGE_90_UP" "INCOME_RANGE_UNDETERMINED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HouseholdIncomeDimension/includeUndetermined> ;
    sh:name "include undetermined" ;
    sh:description "Include users whose household income is not determined." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience Segment Dimension
googleads:AudienceSegmentDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:AudienceSegmentDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceSegmentDimension/segments> ;
    sh:name "segments" ;
    sh:description "Included audience segments. Users are included if they belong to at least one segment." ;
    sh:node googleads:AudienceSegmentShape ;
    sh:class googleads:AudienceSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Audience Segment
googleads:AudienceSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:AudienceSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceSegment/detailedDemographic> ;
    sh:name "detailed demographic" ;
    sh:description "Detailed demographic segment." ;
    sh:node googleads:DetailedDemographicSegmentShape ;
    sh:class googleads:DetailedDemographicSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceSegment/userList> ;
    sh:name "user list" ;
    sh:description "User list segment." ;
    sh:node googleads:UserListSegmentShape ;
    sh:class googleads:UserListSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceSegment/userInterest> ;
    sh:name "user interest" ;
    sh:description "Affinity or In-market segment." ;
    sh:node googleads:UserInterestSegmentShape ;
    sh:class googleads:UserInterestSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceSegment/lifeEvent> ;
    sh:name "life event" ;
    sh:description "Live-event audience segment." ;
    sh:node googleads:LifeEventSegmentShape ;
    sh:class googleads:LifeEventSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceSegment/customAudience> ;
    sh:name "custom audience" ;
    sh:description "Custom audience segment." ;
    sh:node googleads:CustomAudienceSegmentShape ;
    sh:class googleads:CustomAudienceSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Detailed Demographic Segment
googleads:DetailedDemographicSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:DetailedDemographicSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailedDemographicSegment/detailedDemographic> ;
    sh:name "detailed demographic" ;
    sh:description "The detailed demographic resource." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for User List Segment
googleads:UserListSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:UserListSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListSegment/userList> ;
    sh:name "user list" ;
    sh:description "The user list resource." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for User Interest Segment
googleads:UserInterestSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:UserInterestSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterestSegment/userInterestCategory> ;
    sh:name "user interest category" ;
    sh:description "The user interest resource." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Life Event Segment
googleads:LifeEventSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:LifeEventSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEventSegment/lifeEvent> ;
    sh:name "life event" ;
    sh:description "The life event resource." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Audience Segment
googleads:CustomAudienceSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:CustomAudienceSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudienceSegment/customAudience> ;
    sh:name "custom audience" ;
    sh:description "The custom audience resource." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Gender Dimension
googleads:GenderDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:GenderDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GenderDimension/genders> ;
    sh:name "genders" ;
    sh:description "Included gender demographic segments." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MALE" "FEMALE" "UNDETERMINED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GenderDimension/includeUndetermined> ;
    sh:name "include undetermined" ;
    sh:description "Include users whose gender is not determined." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Parental Status Dimension
googleads:ParentalStatusDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:ParentalStatusDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ParentalStatusDimension/parentalStatuses> ;
    sh:name "parental statuses" ;
    sh:description "Included parental status demographic segments." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PARENT" "NOT_A_PARENT" "UNDETERMINED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ParentalStatusDimension/includeUndetermined> ;
    sh:name "include undetermined" ;
    sh:description "Include users whose parental status is undetermined." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience Exclusion Dimension
googleads:AudienceExclusionDimensionShape a sh:NodeShape ;
  sh:targetClass googleads:AudienceExclusionDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.AudienceExclusionDimension/exclusions> ;
    sh:name "exclusions" ;
    sh:description "Audience segment to be excluded." ;
    sh:node googleads:ExclusionSegmentShape ;
    sh:class googleads:ExclusionSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Exclusion Segment
googleads:ExclusionSegmentShape a sh:NodeShape ;
  sh:targetClass googleads:ExclusionSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExclusionSegment/userList> ;
    sh:name "user list" ;
    sh:description "User list segment to be excluded." ;
    sh:node googleads:UserListSegmentShape ;
    sh:class googleads:UserListSegment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Background Check Verification Artifact
googleads:BackgroundCheckVerificationArtifactShape a sh:NodeShape ;
  sh:targetClass googleads:BackgroundCheckVerificationArtifact ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BackgroundCheckVerificationArtifact/caseUrl> ;
    sh:name "case url" ;
    sh:description "Output only. URL to access background case." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BackgroundCheckVerificationArtifact/finalAdjudicationDateTime> ;
    sh:name "final adjudication date time" ;
    sh:description "Output only. The timestamp when this background check case result was adjudicated. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Basic User List Info
googleads:BasicUserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:BasicUserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BasicUserListInfo/actions> ;
    sh:name "actions" ;
    sh:description "Actions associated with this user list." ;
    sh:node googleads:UserListActionInfoShape ;
    sh:class googleads:UserListActionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for User List Action Info
googleads:UserListActionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListActionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListActionInfo/conversionAction> ;
    sh:name "conversion action" ;
    sh:description "A conversion action that's not generated from remarketing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListActionInfo/remarketingAction> ;
    sh:name "remarketing action" ;
    sh:description "A remarketing action." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Batch Job
googleads:BatchJobShape a sh:NodeShape ;
  sh:targetClass googleads:BatchJob ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJob/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of this batch job." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJob/status> ;
    sh:name "status" ;
    sh:description "Output only. Status of this batch job." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "RUNNING" "DONE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJob/longRunningOperation> ;
    sh:name "long running operation" ;
    sh:description "Output only. The resource name of the long-running operation that can be used to poll for completion. Only set when the batch job status is RUNNING or DONE." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJob/metadata> ;
    sh:name "metadata" ;
    sh:description "Output only. Contains additional information about this batch job." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:BatchJobBatchJobMetadataShape ;
    sh:class googleads:BatchJobBatchJobMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJob/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the batch job. Batch job resource names have the form: `customers/{customer_id}/batchJobs/{batch_job_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJob/nextAddSequenceToken> ;
    sh:name "next add sequence token" ;
    sh:description "Output only. The next sequence token to use when adding operations. Only set when the batch job status is PENDING." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Batch Job Batch Job Metadata
googleads:BatchJobBatchJobMetadataShape a sh:NodeShape ;
  sh:targetClass googleads:BatchJobBatchJobMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJobBatchJobMetadata/estimatedCompletionRatio> ;
    sh:name "estimated completion ratio" ;
    sh:description "Output only. The fraction (between 0.0 and 1.0) of mutates that have been processed. This is empty if the job hasn't started running yet." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJobBatchJobMetadata/executedOperationCount> ;
    sh:name "executed operation count" ;
    sh:description "Output only. The number of mutate operations executed by the batch job. Present only if the job has started running." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJobBatchJobMetadata/completionDateTime> ;
    sh:name "completion date time" ;
    sh:description "Output only. The time when this batch job was completed. Formatted as yyyy-MM-dd HH:mm:ss. Example: \"2018-03-05 09:16:00\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJobBatchJobMetadata/operationCount> ;
    sh:name "operation count" ;
    sh:description "Output only. The number of mutate operations in the batch job." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJobBatchJobMetadata/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. The time when this batch job was created. Formatted as yyyy-mm-dd hh:mm:ss. Example: \"2018-03-05 09:15:00\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJobBatchJobMetadata/executionLimitSeconds> ;
    sh:name "execution limit seconds" ;
    sh:description "Immutable. The approximate upper bound for how long a batch job can be executed, in seconds. If the job runs more than the given upper bound, the job will be canceled." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BatchJobBatchJobMetadata/startDateTime> ;
    sh:name "start date time" ;
    sh:description "Output only. The time when this batch job started running. Formatted as yyyy-mm-dd hh:mm:ss. Example: \"2018-03-05 09:15:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bidding Data Exclusion
googleads:BiddingDataExclusionShape a sh:NodeShape ;
  sh:targetClass googleads:BiddingDataExclusion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/dataExclusionId> ;
    sh:name "data exclusion id" ;
    sh:description "Output only. The ID of the data exclusion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the data exclusion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/devices> ;
    sh:name "devices" ;
    sh:description "If not specified, all devices will be included in this exclusion. Otherwise, only the specified targeted devices will be included in this exclusion." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MOBILE" "TABLET" "DESKTOP" "CONNECTED_TV" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/campaigns> ;
    sh:name "campaigns" ;
    sh:description "The data exclusion will apply to the campaigns listed when the scope of this exclusion is CAMPAIGN. The maximum number of campaigns per event is 2000. Note: a data exclusion with both advertising_channel_types and campaign_ids is not supported." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the data exclusion. Data exclusion resource names have the form: `customers/{customer_id}/biddingDataExclusions/{data_exclusion_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/endDateTime> ;
    sh:name "end date time" ;
    sh:description "Required. The exclusive end time of the data exclusion in yyyy-MM-dd HH:mm:ss format. The length of [start_date_time, end_date_time) interval must be within (0, 14 days]." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/description> ;
    sh:name "description" ;
    sh:description "The description of the data exclusion. The description can be at most 2048 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/startDateTime> ;
    sh:name "start date time" ;
    sh:description "Required. The inclusive start time of the data exclusion in yyyy-MM-dd HH:mm:ss format. A data exclusion is backward looking and should be used for events that start in the past and end either in the past or future." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/scope> ;
    sh:name "scope" ;
    sh:description "The scope of the data exclusion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER" "CAMPAIGN" "CHANNEL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/name> ;
    sh:name "name" ;
    sh:description "The name of the data exclusion. The name can be at most 255 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingDataExclusion/advertisingChannelTypes> ;
    sh:name "advertising channel types" ;
    sh:description "The data_exclusion will apply to all the campaigns under the listed channels retroactively as well as going forward when the scope of this exclusion is CHANNEL. The supported advertising channel types are DISPLAY, SEARCH and SHOPPING. Note: a data exclusion with both advertising_channel_types and campaign_ids is not supported." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "DISPLAY" "SHOPPING" "HOTEL" "VIDEO" "MULTI_CHANNEL" "LOCAL" "SMART" "PERFORMANCE_MAX" "LOCAL_SERVICES" "TRAVEL" "DEMAND_GEN" ) ;
  ] .

# Shape for Bidding Seasonality Adjustment
googleads:BiddingSeasonalityAdjustmentShape a sh:NodeShape ;
  sh:targetClass googleads:BiddingSeasonalityAdjustment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/startDateTime> ;
    sh:name "start date time" ;
    sh:description "Required. The inclusive start time of the seasonality adjustment in yyyy-MM-dd HH:mm:ss format. A seasonality adjustment is forward looking and should be used for events that start and end in the future." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/scope> ;
    sh:name "scope" ;
    sh:description "The scope of the seasonality adjustment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER" "CAMPAIGN" "CHANNEL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/name> ;
    sh:name "name" ;
    sh:description "The name of the seasonality adjustment. The name can be at most 255 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/conversionRateModifier> ;
    sh:name "conversion rate modifier" ;
    sh:description "Conversion rate modifier estimated based on expected conversion rate changes. When this field is unset or set to 1.0 no adjustment will be applied to traffic. The allowed range is 0.1 to 10.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/advertisingChannelTypes> ;
    sh:name "advertising channel types" ;
    sh:description "The seasonality adjustment will apply to all the campaigns under the listed channels retroactively as well as going forward when the scope of this adjustment is CHANNEL. The supported advertising channel types are DISPLAY, SEARCH and SHOPPING. Note: a seasonality adjustment with both advertising_channel_types and campaign_ids is not supported." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "DISPLAY" "SHOPPING" "HOTEL" "VIDEO" "MULTI_CHANNEL" "LOCAL" "SMART" "PERFORMANCE_MAX" "LOCAL_SERVICES" "TRAVEL" "DEMAND_GEN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/seasonalityAdjustmentId> ;
    sh:name "seasonality adjustment id" ;
    sh:description "Output only. The ID of the seasonality adjustment." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the seasonality adjustment." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/campaigns> ;
    sh:name "campaigns" ;
    sh:description "The seasonality adjustment will apply to the campaigns listed when the scope of this adjustment is CAMPAIGN. The maximum number of campaigns per event is 2000. Note: a seasonality adjustment with both advertising_channel_types and campaign_ids is not supported." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the seasonality adjustment. Seasonality adjustment resource names have the form: `customers/{customer_id}/biddingSeasonalityAdjustments/{seasonality_adjustment_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/endDateTime> ;
    sh:name "end date time" ;
    sh:description "Required. The exclusive end time of the seasonality adjustment in yyyy-MM-dd HH:mm:ss format. The length of [start_date_time, end_date_time) interval must be within (0, 14 days]." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/description> ;
    sh:name "description" ;
    sh:description "The description of the seasonality adjustment. The description can be at most 2048 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingSeasonalityAdjustment/devices> ;
    sh:name "devices" ;
    sh:description "If not specified, all devices will be included in this adjustment. Otherwise, only the specified targeted devices will be included in this adjustment." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MOBILE" "TABLET" "DESKTOP" "CONNECTED_TV" "OTHER" ) ;
  ] .

# Shape for Bidding Strategy
googleads:BiddingStrategyShape a sh:NodeShape ;
  sh:targetClass googleads:BiddingStrategy ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the bidding strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the bidding strategy. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the bidding strategy. Create a bidding strategy by setting the bidding scheme. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "COMMISSION" "ENHANCED_CPC" "FIXED_CPM" "FIXED_SHARE_OF_VOICE" "INVALID" "MANUAL_CPA" "MANUAL_CPC" "MANUAL_CPM" "MANUAL_CPV" "MAXIMIZE_CONVERSIONS" "MAXIMIZE_CONVERSION_VALUE" "PAGE_ONE_PROMOTED" "PERCENT_CPC" "TARGET_CPA" "TARGET_CPC" "TARGET_CPM" "TARGET_CPV" "TARGET_IMPRESSION_SHARE" "TARGET_OUTRANK_SHARE" "TARGET_ROAS" "TARGET_SPEND" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/targetSpend> ;
    sh:name "target spend" ;
    sh:description "A bid strategy that sets your bids to help get as many clicks as possible within your budget." ;
    sh:node googleads:TargetSpendShape ;
    sh:class googleads:TargetSpend ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/targetRoas> ;
    sh:name "target roas" ;
    sh:description "A bidding strategy that helps you maximize revenue while averaging a specific target Return On Ad Spend (ROAS)." ;
    sh:node googleads:TargetRoasShape ;
    sh:class googleads:TargetRoas ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/maximizeConversionValue> ;
    sh:name "maximize conversion value" ;
    sh:description "An automated bidding strategy to help get the most conversion value for your campaigns while spending your budget." ;
    sh:node googleads:MaximizeConversionValueShape ;
    sh:class googleads:MaximizeConversionValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/name> ;
    sh:name "name" ;
    sh:description "The name of the bidding strategy. All bidding strategies within an account must be named distinctly. The length of this string should be between 1 and 255, inclusive, in UTF-8 bytes, (trimmed)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Immutable. The currency used by the bidding strategy (ISO 4217 three-letter code). For bidding strategies in manager customers, this currency can be set on creation and defaults to the manager customer's currency. For serving customers, this field cannot be set; all strategies in a serving customer implicitly use the serving customer's currency. In all cases the effective_currency_code field returns the currency used by the strategy." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/nonRemovedCampaignCount> ;
    sh:name "non removed campaign count" ;
    sh:description "Output only. The number of non-removed campaigns attached to this bidding strategy. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/campaignCount> ;
    sh:name "campaign count" ;
    sh:description "Output only. The number of campaigns attached to this bidding strategy. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/targetCpa> ;
    sh:name "target cpa" ;
    sh:description "A bidding strategy that sets bids to help get as many conversions as possible at the target cost-per-acquisition (CPA) you set." ;
    sh:node googleads:TargetCpaShape ;
    sh:class googleads:TargetCpa ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/targetImpressionShare> ;
    sh:name "target impression share" ;
    sh:description "A bidding strategy that automatically optimizes towards a chosen percentage of impressions." ;
    sh:node googleads:TargetImpressionShareShape ;
    sh:class googleads:TargetImpressionShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the bidding strategy. Bidding strategy resource names have the form: `customers/{customer_id}/biddingStrategies/{bidding_strategy_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/enhancedCpc> ;
    sh:name "enhanced cpc" ;
    sh:description "A bidding strategy that raises bids for clicks that seem more likely to lead to a conversion and lowers them for clicks where they seem less likely." ;
    sh:node googleads:EnhancedCpcShape ;
    sh:class googleads:EnhancedCpc ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/effectiveCurrencyCode> ;
    sh:name "effective currency code" ;
    sh:description "Output only. The currency used by the bidding strategy (ISO 4217 three-letter code). For bidding strategies in manager customers, this is the currency set by the advertiser when creating the strategy. For serving customers, this is the customer's currency_code. Bidding strategy metrics are reported in this currency. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/alignedCampaignBudgetId> ;
    sh:name "aligned campaign budget id" ;
    sh:description "ID of the campaign budget that this portfolio bidding strategy is aligned with. When a portfolio and a campaign budget are aligned, that means that they are attached to the same set of campaigns. After a bidding strategy is aligned with a campaign budget, campaigns that are added to the bidding strategy must also use the aligned campaign budget." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategy/maximizeConversions> ;
    sh:name "maximize conversions" ;
    sh:description "An automated bidding strategy to help get the most conversions for your campaigns while spending your budget." ;
    sh:node googleads:MaximizeConversionsShape ;
    sh:class googleads:MaximizeConversions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Spend
googleads:TargetSpendShape a sh:NodeShape ;
  sh:targetClass googleads:TargetSpend ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetSpend/targetSpendMicros> ;
    sh:name "target spend micros" ;
    sh:description "Deprecated: The spend target under which to maximize clicks. A TargetSpend bidder will attempt to spend the smaller of this value or the natural throttling spend amount. If not specified, the budget is used as the spend target. This field is deprecated and should no longer be used. See https://ads-developers.googleblog.com/2020/05/reminder-about-sunset-creation-of.html for details." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetSpend/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Maximum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Roas
googleads:TargetRoasShape a sh:NodeShape ;
  sh:targetClass googleads:TargetRoas ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoas/cpcBidFloorMicros> ;
    sh:name "cpc bid floor micros" ;
    sh:description "Minimum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. This should only be set for portfolio bid strategies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoas/targetRoasTolerancePercentMillis> ;
    sh:name "target roas tolerance percent millis" ;
    sh:description "The percent of ROAS(return on advertising spend) degradation tolerance allowed to increase traffic diversity and conversion volume, specified in millis (for example, 10,000 = 10%). A value of 10,000 means that the advertiser can expect ROAS degradation of up to 10% of the specified target ROAS. This field is only mutable for portfolio bidding strategies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoas/targetRoas> ;
    sh:name "target roas" ;
    sh:description "Required. The chosen revenue (based on conversion data) per unit of spend. Value must be between 0.01 and 1000.0, inclusive." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetRoas/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Maximum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. This should only be set for portfolio bid strategies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Maximize Conversion Value
googleads:MaximizeConversionValueShape a sh:NodeShape ;
  sh:targetClass googleads:MaximizeConversionValue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MaximizeConversionValue/cpcBidFloorMicros> ;
    sh:name "cpc bid floor micros" ;
    sh:description "Minimum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. Mutable for portfolio bidding strategies only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MaximizeConversionValue/targetRoasTolerancePercentMillis> ;
    sh:name "target roas tolerance percent millis" ;
    sh:description "The percent of ROAS(return on advertising spend) degradation tolerance allowed to increase traffic diversity and conversion volume, specified in millis (for example, 10,000 = 10%). A value of 10,000 means that the advertiser can expect ROAS degradation of up to 10% of the specified target ROAS." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MaximizeConversionValue/targetRoas> ;
    sh:name "target roas" ;
    sh:description "The target return on ad spend (ROAS) option. If set, the bid strategy will maximize revenue while averaging the target return on ad spend. If the target ROAS is high, the bid strategy may not be able to spend the full budget. If the target ROAS is not set, the bid strategy will aim to achieve the highest possible ROAS for the budget." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MaximizeConversionValue/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Maximum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. Mutable for portfolio bidding strategies only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Cpa
googleads:TargetCpaShape a sh:NodeShape ;
  sh:targetClass googleads:TargetCpa ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpa/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "Average CPA target. This target should be greater than or equal to minimum billable unit based on the currency for the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpa/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Maximum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. This should only be set for portfolio bid strategies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpa/cpcBidFloorMicros> ;
    sh:name "cpc bid floor micros" ;
    sh:description "Minimum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. This should only be set for portfolio bid strategies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Impression Share
googleads:TargetImpressionShareShape a sh:NodeShape ;
  sh:targetClass googleads:TargetImpressionShare ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShare/location> ;
    sh:name "location" ;
    sh:description "The targeted location on the search results page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ANYWHERE_ON_PAGE" "TOP_OF_PAGE" "ABSOLUTE_TOP_OF_PAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShare/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "The highest CPC bid the automated bidding system is permitted to specify. This is a required field entered by the advertiser that sets the ceiling and specified in local micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShare/locationFractionMicros> ;
    sh:name "location fraction micros" ;
    sh:description "The chosen fraction of ads to be shown in the targeted location in micros. For example, 1% equals 10,000." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Enhanced Cpc
googleads:EnhancedCpcShape a sh:NodeShape ;
  sh:targetClass googleads:EnhancedCpc .

# Shape for Maximize Conversions
googleads:MaximizeConversionsShape a sh:NodeShape ;
  sh:targetClass googleads:MaximizeConversions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MaximizeConversions/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Maximum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. Mutable for portfolio bidding strategies only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MaximizeConversions/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "The target cost-per-action (CPA) option. This is the average amount that you would like to spend per conversion action specified in micro units of the bidding strategy's currency. If set, the bid strategy will get as many conversions as possible at or below the target cost-per-action. If the target CPA is not set, the bid strategy will aim to achieve the lowest possible CPA given the budget." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MaximizeConversions/cpcBidFloorMicros> ;
    sh:name "cpc bid floor micros" ;
    sh:description "Minimum bid limit that can be set by the bid strategy. The limit applies to all keywords managed by the strategy. Mutable for portfolio bidding strategies only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Bidding Strategy Simulation
googleads:BiddingStrategySimulationShape a sh:NodeShape ;
  sh:targetClass googleads:BiddingStrategySimulation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/modificationMethod> ;
    sh:name "modification method" ;
    sh:description "Output only. How the simulation modifies the field." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNIFORM" "DEFAULT" "SCALING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the bidding strategy simulation. Bidding strategy simulation resource names have the form: `customers/{customer_id}/biddingStrategySimulations/{bidding_strategy_id}~{type}~{modification_method}~{start_date}~{end_date}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/type> ;
    sh:name "type" ;
    sh:description "Output only. The field that the simulation modifies." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CPC_BID" "CPV_BID" "TARGET_CPA" "BID_MODIFIER" "TARGET_ROAS" "PERCENT_CPC_BID" "TARGET_IMPRESSION_SHARE" "BUDGET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/startDate> ;
    sh:name "start date" ;
    sh:description "Output only. First day on which the simulation is based, in YYYY-MM-DD format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/endDate> ;
    sh:name "end date" ;
    sh:description "Output only. Last day on which the simulation is based, in YYYY-MM-DD format" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/targetCpaPointList> ;
    sh:name "target cpa point list" ;
    sh:description "Output only. Simulation points if the simulation type is TARGET_CPA." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TargetCpaSimulationPointListShape ;
    sh:class googleads:TargetCpaSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/biddingStrategyId> ;
    sh:name "bidding strategy id" ;
    sh:description "Output only. Bidding strategy shared set id of the simulation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BiddingStrategySimulation/targetRoasPointList> ;
    sh:name "target roas point list" ;
    sh:description "Output only. Simulation points if the simulation type is TARGET_ROAS." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TargetRoasSimulationPointListShape ;
    sh:class googleads:TargetRoasSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Billing Setup
googleads:BillingSetupShape a sh:NodeShape ;
  sh:targetClass googleads:BillingSetup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/startDateTime> ;
    sh:name "start date time" ;
    sh:description "Immutable. The start date time in yyyy-MM-dd or yyyy-MM-dd HH:mm:ss format. Only a future time is allowed." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the billing setup." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the billing setup." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "APPROVED_HELD" "APPROVED" "CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/paymentsAccount> ;
    sh:name "payments account" ;
    sh:description "Immutable. The resource name of the payments account associated with this billing setup. Payments resource names have the form: `customers/{customer_id}/paymentsAccounts/{payments_account_id}` When setting up billing, this is used to signup with an existing payments account (and then payments_account_info should not be set). When getting a billing setup, this and payments_account_info will be populated." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/startTimeType> ;
    sh:name "start time type" ;
    sh:description "Immutable. The start time as a type. Only NOW is allowed." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the billing setup. BillingSetup resource names have the form: `customers/{customer_id}/billingSetups/{billing_setup_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/endDateTime> ;
    sh:name "end date time" ;
    sh:description "Output only. The end date time in yyyy-MM-dd or yyyy-MM-dd HH:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/endTimeType> ;
    sh:name "end time type" ;
    sh:description "Output only. The end time as a type. The only possible value is FOREVER." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOW" "FOREVER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetup/paymentsAccountInfo> ;
    sh:name "payments account info" ;
    sh:description "Immutable. The payments account information associated with this billing setup. When setting up billing, this is used to signup with a new payments account (and then payments_account should not be set). When getting a billing setup, this and payments_account will be populated." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:BillingSetupPaymentsAccountInfoShape ;
    sh:class googleads:BillingSetupPaymentsAccountInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Billing Setup Payments Account Info
googleads:BillingSetupPaymentsAccountInfoShape a sh:NodeShape ;
  sh:targetClass googleads:BillingSetupPaymentsAccountInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetupPaymentsAccountInfo/secondaryPaymentsProfileId> ;
    sh:name "secondary payments profile id" ;
    sh:description "Output only. A secondary payments profile id present in uncommon situations, for example, when a sequential liability agreement has been arranged." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetupPaymentsAccountInfo/paymentsProfileId> ;
    sh:name "payments profile id" ;
    sh:description "Immutable. A 12 digit id used to identify the payments profile associated with the billing setup. This must be passed in as a string with dashes, for example, \"1234-5678-9012\"." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetupPaymentsAccountInfo/paymentsAccountId> ;
    sh:name "payments account id" ;
    sh:description "Output only. A 16 digit id used to identify the payments account associated with the billing setup. This must be passed as a string with dashes, for example, \"1234-5678-9012-3456\"." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetupPaymentsAccountInfo/paymentsProfileName> ;
    sh:name "payments profile name" ;
    sh:description "Output only. The name of the payments profile associated with the billing setup." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BillingSetupPaymentsAccountInfo/paymentsAccountName> ;
    sh:name "payments account name" ;
    sh:description "Immutable. The name of the payments account associated with the billing setup. This enables the user to specify a meaningful name for a payments account to aid in reconciling monthly invoices. This name will be printed in the monthly invoices." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Brand Info
googleads:BrandInfoShape a sh:NodeShape ;
  sh:targetClass googleads:BrandInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BrandInfo/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. A text representation of a brand." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BrandInfo/primaryUrl> ;
    sh:name "primary url" ;
    sh:description "Output only. The primary url of a brand." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BrandInfo/rejectionReason> ;
    sh:name "rejection reason" ;
    sh:description "Output only. The rejection reason when a brand status is REJECTED." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXISTING_BRAND" "EXISTING_BRAND_VARIANT" "INCORRECT_INFORMATION" "NOT_A_BRAND" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BrandInfo/entityId> ;
    sh:name "entity id" ;
    sh:description "The Commercial KG MID for the brand." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BrandInfo/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of a brand." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "DEPRECATED" "UNVERIFIED" "APPROVED" "CANCELLED" "REJECTED" ) ;
  ] .

# Shape for Budget Campaign Association Status
googleads:BudgetCampaignAssociationStatusShape a sh:NodeShape ;
  sh:targetClass googleads:BudgetCampaignAssociationStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetCampaignAssociationStatus/status> ;
    sh:name "status" ;
    sh:description "Budget campaign association status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetCampaignAssociationStatus/campaign> ;
    sh:name "campaign" ;
    sh:description "The campaign resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Budget Simulation Point
googleads:BudgetSimulationPointShape a sh:NodeShape ;
  sh:targetClass googleads:BudgetSimulationPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/budgetAmountMicros> ;
    sh:name "budget amount micros" ;
    sh:description "The simulated budget upon which projected metrics are based." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/biddableConversionsValue> ;
    sh:name "biddable conversions value" ;
    sh:description "Projected total value of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Projected cost in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/impressions> ;
    sh:name "impressions" ;
    sh:description "Projected number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/clicks> ;
    sh:name "clicks" ;
    sh:description "Projected number of clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/requiredCpcBidCeilingMicros> ;
    sh:name "required cpc bid ceiling micros" ;
    sh:description "Projected required daily cpc bid ceiling that the advertiser must set to realize this simulation, in micros of the advertiser currency. Only campaigns with the Target Spend bidding strategy support this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/interactions> ;
    sh:name "interactions" ;
    sh:description "Projected number of interactions. Only discovery advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/biddableConversions> ;
    sh:name "biddable conversions" ;
    sh:description "Projected number of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPoint/topSlotImpressions> ;
    sh:name "top slot impressions" ;
    sh:description "Projected number of top slot impressions. Only search advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Budget Simulation Point List
googleads:BudgetSimulationPointListShape a sh:NodeShape ;
  sh:targetClass googleads:BudgetSimulationPointList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BudgetSimulationPointList/points> ;
    sh:name "points" ;
    sh:description "Projected metrics for a series of budget amounts." ;
    sh:node googleads:BudgetSimulationPointShape ;
    sh:class googleads:BudgetSimulationPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Business Registration Check Verification Artifact
googleads:BusinessRegistrationCheckVerificationArtifactShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessRegistrationCheckVerificationArtifact ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessRegistrationCheckVerificationArtifact/registrationNumber> ;
    sh:name "registration number" ;
    sh:description "Output only. Message storing government issued number for the business." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:BusinessRegistrationNumberShape ;
    sh:class googleads:BusinessRegistrationNumber ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessRegistrationCheckVerificationArtifact/rejectionReason> ;
    sh:name "rejection reason" ;
    sh:description "Output only. Registration document rejection reason." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BUSINESS_NAME_MISMATCH" "BUSINESS_DETAILS_MISMATCH" "ID_NOT_FOUND" "POOR_DOCUMENT_IMAGE_QUALITY" "DOCUMENT_EXPIRED" "DOCUMENT_INVALID" "DOCUMENT_TYPE_MISMATCH" "DOCUMENT_UNVERIFIABLE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessRegistrationCheckVerificationArtifact/registrationType> ;
    sh:name "registration type" ;
    sh:description "Output only. The type of business registration check (number, document)." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NUMBER" "DOCUMENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessRegistrationCheckVerificationArtifact/checkId> ;
    sh:name "check id" ;
    sh:description "Output only. The id of the check, such as vat_tax_id, representing \"VAT Tax ID\" requirement." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessRegistrationCheckVerificationArtifact/registrationDocument> ;
    sh:name "registration document" ;
    sh:description "Output only. Message storing document info for the business." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:BusinessRegistrationDocumentShape ;
    sh:class googleads:BusinessRegistrationDocument ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Business Registration Number
googleads:BusinessRegistrationNumberShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessRegistrationNumber ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessRegistrationNumber/number> ;
    sh:name "number" ;
    sh:description "Output only. Government-issued number for the business." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Business Registration Document
googleads:BusinessRegistrationDocumentShape a sh:NodeShape ;
  sh:targetClass googleads:BusinessRegistrationDocument ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.BusinessRegistrationDocument/documentReadonly> ;
    sh:name "document readonly" ;
    sh:description "Output only. The readonly field containing the information for an uploaded business registration document." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LocalServicesDocumentReadOnlyShape ;
    sh:class googleads:LocalServicesDocumentReadOnly ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Local Services Document Read Only
googleads:LocalServicesDocumentReadOnlyShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesDocumentReadOnly ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesDocumentReadOnly/documentUrl> ;
    sh:name "document url" ;
    sh:description "URL to access an already uploaded Local Services document." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Call Reporting Setting
googleads:CallReportingSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CallReportingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallReportingSetting/callReportingEnabled> ;
    sh:name "call reporting enabled" ;
    sh:description "Enable reporting of phone call events by redirecting them through Google System." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallReportingSetting/callConversionReportingEnabled> ;
    sh:name "call conversion reporting enabled" ;
    sh:description "Whether to enable call conversion reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallReportingSetting/callConversionAction> ;
    sh:name "call conversion action" ;
    sh:description "Customer-level call conversion action to attribute a call conversion to. If not set a default conversion action is used. Only in effect when call_conversion_reporting_enabled is set to true." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Call View
googleads:CallViewShape a sh:NodeShape ;
  sh:targetClass googleads:CallView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/callTrackingDisplayLocation> ;
    sh:name "call tracking display location" ;
    sh:description "Output only. The call tracking display location." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AD" "LANDING_PAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/callerCountryCode> ;
    sh:name "caller country code" ;
    sh:description "Output only. Country code of the caller." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/callDurationSeconds> ;
    sh:name "call duration seconds" ;
    sh:description "Output only. The advertiser-provided call duration in seconds." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/startCallDateTime> ;
    sh:name "start call date time" ;
    sh:description "Output only. The advertiser-provided call start date time." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/callStatus> ;
    sh:name "call status" ;
    sh:description "Output only. The status of the call." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MISSED" "RECEIVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/endCallDateTime> ;
    sh:name "end call date time" ;
    sh:description "Output only. The advertiser-provided call end date time." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the call." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MANUALLY_DIALED" "HIGH_END_MOBILE_SEARCH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the call view. Call view resource names have the form: `customers/{customer_id}/callViews/{call_detail_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CallView/callerAreaCode> ;
    sh:name "caller area code" ;
    sh:description "Output only. Area code of the caller. Null if the call duration is shorter than 15 seconds." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign
googleads:CampaignShape a sh:NodeShape ;
  sh:targetClass googleads:Campaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/maximizeConversionValue> ;
    sh:name "maximize conversion value" ;
    sh:description "Standard Maximize Conversion Value bidding strategy that automatically sets bids to maximize revenue while spending your budget." ;
    sh:node googleads:MaximizeConversionValueShape ;
    sh:class googleads:MaximizeConversionValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/endDateTime> ;
    sh:name "end date time" ;
    sh:description "The last day and time of the campaign in serving customer's timezone in \"yyyy-MM-dd HH:mm:ss\" format. Set the time component to 23:59:59 for daily granularity, time granularity is only supported for some campaign types. On create, defaults to running indefinitely. To set an existing campaign to run indefinitely, clear this field." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetCpm> ;
    sh:name "target cpm" ;
    sh:description "A bidding strategy that automatically optimizes cost per thousand impressions." ;
    sh:node googleads:TargetCpmShape ;
    sh:class googleads:TargetCpm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/fixedCpm> ;
    sh:name "fixed cpm" ;
    sh:description "A manual bidding strategy with a fixed CPM." ;
    sh:node googleads:FixedCpmShape ;
    sh:class googleads:FixedCpm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/viewThroughConversionOptimizationEnabled> ;
    sh:name "view through conversion optimization enabled" ;
    sh:description "Whether VTC (View-through Conversion) optimization is enabled for this campaign. Only allowed for certain Demand Gen and App Campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetCpc> ;
    sh:name "target cpc" ;
    sh:description "An automated bidding strategy that sets bids to help get as many clicks as possible at the target cost-per-click (CPC) you set." ;
    sh:node googleads:TargetCpcShape ;
    sh:class googleads:TargetCpc ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/pmaxCampaignSettings> ;
    sh:name "pmax campaign settings" ;
    sh:description "Settings for Performance Max campaign." ;
    sh:node googleads:CampaignPmaxCampaignSettingsShape ;
    sh:class googleads:CampaignPmaxCampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/hotelPropertyAssetSet> ;
    sh:name "hotel property asset set" ;
    sh:description "Immutable. The resource name for a set of hotel properties for Performance Max for travel goals campaigns." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/audienceSetting> ;
    sh:name "audience setting" ;
    sh:description "Immutable. Setting for audience related features." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CampaignAudienceSettingShape ;
    sh:class googleads:CampaignAudienceSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/demandGenCampaignSettings> ;
    sh:name "demand gen campaign settings" ;
    sh:description "Settings for Demand Gen campaign." ;
    sh:node googleads:CampaignDemandGenCampaignSettingsShape ;
    sh:class googleads:CampaignDemandGenCampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/startDateTime> ;
    sh:name "start date time" ;
    sh:description "The date and time when campaign started in serving. The timestamp is in the customer's time zone and in \"yyyy-MM-dd HH:mm:ss\" format. Set the time component to 00:00:00 for daily granularity, time granularity is only supported for some campaign types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/biddingStrategySystemStatus> ;
    sh:name "bidding strategy system status" ;
    sh:description "Output only. The system status of the campaign's bidding strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "LEARNING_NEW" "LEARNING_SETTING_CHANGE" "LEARNING_BUDGET_CHANGE" "LEARNING_COMPOSITION_CHANGE" "LEARNING_CONVERSION_TYPE_CHANGE" "LEARNING_CONVERSION_SETTING_CHANGE" "LIMITED_BY_CPC_BID_CEILING" "LIMITED_BY_CPC_BID_FLOOR" "LIMITED_BY_DATA" "LIMITED_BY_BUDGET" "LIMITED_BY_LOW_PRIORITY_SPEND" "LIMITED_BY_LOW_QUALITY" "LIMITED_BY_INVENTORY" "MISCONFIGURED_ZERO_ELIGIBILITY" "MISCONFIGURED_CONVERSION_TYPES" "MISCONFIGURED_CONVERSION_SETTINGS" "MISCONFIGURED_SHARED_BUDGET" "MISCONFIGURED_STRATEGY_TYPE" "PAUSED" "UNAVAILABLE" "MULTIPLE_LEARNING" "MULTIPLE_LIMITED" "MULTIPLE_MISCONFIGURED" "MULTIPLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign. Campaign resource names have the form: `customers/{customer_id}/campaigns/{campaign_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetImpressionShare> ;
    sh:name "target impression share" ;
    sh:description "Target Impression Share bidding strategy. An automated bidding strategy that sets bids to achieve a chosen percentage of impressions." ;
    sh:node googleads:TargetImpressionShareShape ;
    sh:class googleads:TargetImpressionShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetCpa> ;
    sh:name "target cpa" ;
    sh:description "Standard Target CPA bidding strategy that automatically sets bids to help get as many conversions as possible at the target cost-per-acquisition (CPA) you set." ;
    sh:node googleads:TargetCpaShape ;
    sh:class googleads:TargetCpa ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetCpv> ;
    sh:name "target cpv" ;
    sh:description "An automated bidding strategy that sets bids to optimize performance given the target CPV you set." ;
    sh:node googleads:TargetCpvShape ;
    sh:class googleads:TargetCpv ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/baseCampaign> ;
    sh:name "base campaign" ;
    sh:description "Output only. The resource name of the base campaign of a draft or experiment campaign. For base campaigns, this is equal to `resource_name`. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetingSetting> ;
    sh:name "targeting setting" ;
    sh:description "Setting for targeting related features." ;
    sh:node googleads:TargetingSettingShape ;
    sh:class googleads:TargetingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/optimizationScore> ;
    sh:name "optimization score" ;
    sh:description "Output only. Optimization score of the campaign. Optimization score is an estimate of how well a campaign is set to perform. It ranges from 0% (0.0) to 100% (1.0), with 100% indicating that the campaign is performing at full potential. This field is null for unscored campaigns. See \"About optimization score\" at https://support.google.com/google-ads/answer/9061546. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetRoas> ;
    sh:name "target roas" ;
    sh:description "Standard Target ROAS bidding strategy that automatically maximizes revenue while averaging a specific target return on ad spend (ROAS)." ;
    sh:node googleads:TargetRoasShape ;
    sh:class googleads:TargetRoas ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/advertisingChannelSubType> ;
    sh:name "advertising channel sub type" ;
    sh:description "Immutable. Optional refinement to `advertising_channel_type`. Must be a valid sub-type of the parent channel type. Can be set only when creating campaigns. After campaign is created, the field can not be changed." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH_MOBILE_APP" "DISPLAY_MOBILE_APP" "SEARCH_EXPRESS" "DISPLAY_EXPRESS" "SHOPPING_SMART_ADS" "DISPLAY_GMAIL_AD" "DISPLAY_SMART_CAMPAIGN" "VIDEO_ACTION" "VIDEO_NON_SKIPPABLE" "APP_CAMPAIGN" "APP_CAMPAIGN_FOR_ENGAGEMENT" "LOCAL_CAMPAIGN" "SHOPPING_COMPARISON_LISTING_ADS" "SMART_CAMPAIGN" "VIDEO_SEQUENCE" "APP_CAMPAIGN_FOR_PRE_REGISTRATION" "VIDEO_REACH_TARGET_FREQUENCY" "TRAVEL_ACTIVITIES" "YOUTUBE_AUDIO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/targetSpend> ;
    sh:name "target spend" ;
    sh:description "Standard Target Spend bidding strategy that automatically sets your bids to help get as many clicks as possible within your budget." ;
    sh:node googleads:TargetSpendShape ;
    sh:class googleads:TargetSpend ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/status> ;
    sh:name "status" ;
    sh:description "The status of the campaign. When a new campaign is added, the status defaults to ENABLED." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "PAUSED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/hotelSetting> ;
    sh:name "hotel setting" ;
    sh:description "The hotel setting for the campaign." ;
    sh:node googleads:CampaignHotelSettingInfoShape ;
    sh:class googleads:CampaignHotelSettingInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/selectiveOptimization> ;
    sh:name "selective optimization" ;
    sh:description "Selective optimization setting for this campaign, which includes a set of conversion actions to optimize this campaign towards. This feature only applies to app campaigns that use MULTI_CHANNEL as AdvertisingChannelType and APP_CAMPAIGN or APP_CAMPAIGN_FOR_ENGAGEMENT as AdvertisingChannelSubType." ;
    sh:node googleads:CampaignSelectiveOptimizationShape ;
    sh:class googleads:CampaignSelectiveOptimization ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/paymentMode> ;
    sh:name "payment mode" ;
    sh:description "Payment mode for the campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CLICKS" "CONVERSION_VALUE" "CONVERSIONS" "GUEST_STAY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. The primary status reasons of the campaign. Provides insight into why a campaign is not serving or not serving optimally. These reasons are aggregated to determine an overall CampaignPrimaryStatus." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_REMOVED" "CAMPAIGN_PAUSED" "CAMPAIGN_PENDING" "CAMPAIGN_ENDED" "CAMPAIGN_DRAFT" "BIDDING_STRATEGY_MISCONFIGURED" "BIDDING_STRATEGY_LIMITED" "BIDDING_STRATEGY_LEARNING" "BIDDING_STRATEGY_CONSTRAINED" "BUDGET_CONSTRAINED" "BUDGET_MISCONFIGURED" "SEARCH_VOLUME_LIMITED" "AD_GROUPS_PAUSED" "NO_AD_GROUPS" "KEYWORDS_PAUSED" "NO_KEYWORDS" "AD_GROUP_ADS_PAUSED" "NO_AD_GROUP_ADS" "HAS_ADS_LIMITED_BY_POLICY" "HAS_ADS_DISAPPROVED" "MOST_ADS_UNDER_REVIEW" "MISSING_LEAD_FORM_EXTENSION" "MISSING_CALL_EXTENSION" "LEAD_FORM_EXTENSION_UNDER_REVIEW" "LEAD_FORM_EXTENSION_DISAPPROVED" "CALL_EXTENSION_UNDER_REVIEW" "CALL_EXTENSION_DISAPPROVED" "NO_MOBILE_APPLICATION_AD_GROUP_CRITERIA" "CAMPAIGN_GROUP_PAUSED" "CAMPAIGN_GROUP_ALL_GROUP_BUDGETS_ENDED" "APP_NOT_RELEASED" "APP_PARTIALLY_RELEASED" "HAS_ASSET_GROUPS_DISAPPROVED" "HAS_ASSET_GROUPS_LIMITED_BY_POLICY" "MOST_ASSET_GROUPS_UNDER_REVIEW" "NO_ASSET_GROUPS" "ASSET_GROUPS_PAUSED" "MISSING_LOCATION_TARGETING" "CAMPAIGN_NOT_BOOKED" "BOOKING_HOLD_EXPIRING" "BOOKING_HOLD_EXPIRED" "BOOKING_CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/experimentType> ;
    sh:name "experiment type" ;
    sh:description "Output only. The type of campaign: normal, draft, or experiment." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BASE" "DRAFT" "EXPERIMENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/optimizationGoalSetting> ;
    sh:name "optimization goal setting" ;
    sh:description "Optimization goal setting for this campaign, which includes a set of optimization goal types." ;
    sh:node googleads:CampaignOptimizationGoalSettingShape ;
    sh:class googleads:CampaignOptimizationGoalSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/accessibleBiddingStrategy> ;
    sh:name "accessible bidding strategy" ;
    sh:description "Output only. Resource name of AccessibleBiddingStrategy, a read-only view of the unrestricted attributes of the attached portfolio bidding strategy identified by 'bidding_strategy'. Empty, if the campaign does not use a portfolio strategy. Unrestricted strategy attributes are available to all customers with whom the strategy is shared and are read from the AccessibleBiddingStrategy resource. In contrast, restricted attributes are only available to the owner customer of the strategy and their managers. Restricted attributes can only be read from the BiddingStrategy resource." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/localServicesCampaignSettings> ;
    sh:name "local services campaign settings" ;
    sh:description "The Local Services Campaign related settings." ;
    sh:node googleads:CampaignLocalServicesCampaignSettingsShape ;
    sh:class googleads:CampaignLocalServicesCampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/keywordMatchType> ;
    sh:name "keyword match type" ;
    sh:description "Keyword match type of Campaign. Set to BROAD to set broad matching for all keywords in a campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BROAD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/brandGuidelinesEnabled> ;
    sh:name "brand guidelines enabled" ;
    sh:description "Immutable. Whether Brand Guidelines are enabled for this Campaign. Only applicable to Performance Max campaigns. If enabled, business name and logo assets must be linked as CampaignAssets instead of AssetGroupAssets. Writable only at campaign creation. Set to true to enable Brand Guidelines when creating a new Performance Max campaign. Immutable after creation. This field cannot be modified using standard update operations after the campaign has been created. For existing campaigns: To enable Brand Guidelines on a campaign after it has been created, use the CampaignService.EnablePMaxBrandGuidelines method, which is a separate operation. It is not possible to disable Brand Guidelines for an existing campaign. Incompatible with Travel Goals: This feature is not supported for Performance Max campaigns with Travel Goals. Attempting to set this field to true for a Travel Goals campaign will result in an error." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/labels> ;
    sh:name "labels" ;
    sh:description "Output only. The resource names of labels attached to this campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The URL template for constructing a tracking URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/listingType> ;
    sh:name "listing type" ;
    sh:description "Immutable. Listing type of ads served for this campaign. Field is restricted for usage with Performance Max campaigns." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "VEHICLES" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/maximizeConversions> ;
    sh:name "maximize conversions" ;
    sh:description "Standard Maximize Conversions bidding strategy that automatically maximizes number of conversions while spending your budget." ;
    sh:node googleads:MaximizeConversionsShape ;
    sh:class googleads:MaximizeConversions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/campaignBudget> ;
    sh:name "campaign budget" ;
    sh:description "The resource name of the campaign budget of the campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/assetAutomationSettings> ;
    sh:name "asset automation settings" ;
    sh:description "Contains the opt-in/out status of each AssetAutomationType. See documentation of each asset automation type enum for default opt in/out behavior." ;
    sh:node googleads:CampaignAssetAutomationSettingShape ;
    sh:class googleads:CampaignAssetAutomationSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/biddingStrategy> ;
    sh:name "bidding strategy" ;
    sh:description "The resource name of the portfolio bidding strategy used by the campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/advertisingChannelType> ;
    sh:name "advertising channel type" ;
    sh:description "Immutable. The primary serving target for ads within the campaign. The targeting options can be refined in `network_settings`. This field is required and should not be empty when creating new campaigns. Can be set only when creating campaigns. After the campaign is created, the field can not be changed." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "DISPLAY" "SHOPPING" "HOTEL" "VIDEO" "MULTI_CHANNEL" "LOCAL" "SMART" "PERFORMANCE_MAX" "LOCAL_SERVICES" "TRAVEL" "DEMAND_GEN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "The list of mappings used to substitute custom parameter tags in a `tracking_url_template`, `final_urls`, or `mobile_final_urls`." ;
    sh:node googleads:CustomParameterShape ;
    sh:class googleads:CustomParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/manualCpc> ;
    sh:name "manual cpc" ;
    sh:description "Standard Manual CPC bidding strategy. Manual click-based bidding where user pays per click." ;
    sh:node googleads:ManualCpcShape ;
    sh:class googleads:ManualCpc ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/percentCpc> ;
    sh:name "percent cpc" ;
    sh:description "Standard Percent Cpc bidding strategy where bids are a fraction of the advertised price for some good or service." ;
    sh:node googleads:PercentCpcShape ;
    sh:class googleads:PercentCpc ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/travelCampaignSettings> ;
    sh:name "travel campaign settings" ;
    sh:description "Settings for Travel campaign." ;
    sh:node googleads:CampaignTravelCampaignSettingsShape ;
    sh:class googleads:CampaignTravelCampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/thirdPartyIntegrationPartners> ;
    sh:name "third party integration partners" ;
    sh:description "Third-Party integration partners." ;
    sh:node googleads:CampaignThirdPartyIntegrationPartnersShape ;
    sh:class googleads:CampaignThirdPartyIntegrationPartners ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/aiMaxSetting> ;
    sh:name "ai max setting" ;
    sh:description "Settings for AI Max in Search and Shopping campaigns." ;
    sh:node googleads:CampaignAiMaxSettingShape ;
    sh:class googleads:CampaignAiMaxSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/networkSettings> ;
    sh:name "network settings" ;
    sh:description "The network settings for the campaign." ;
    sh:node googleads:CampaignNetworkSettingsShape ;
    sh:class googleads:CampaignNetworkSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/trackingSetting> ;
    sh:name "tracking setting" ;
    sh:description "Output only. Campaign-level settings for tracking information." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignTrackingSettingShape ;
    sh:class googleads:CampaignTrackingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/vanityPharma> ;
    sh:name "vanity pharma" ;
    sh:description "Describes how unbranded pharma ads will be displayed." ;
    sh:node googleads:CampaignVanityPharmaShape ;
    sh:class googleads:CampaignVanityPharma ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/biddingStrategyType> ;
    sh:name "bidding strategy type" ;
    sh:description "Output only. The type of bidding strategy. A bidding strategy can be created by setting either the bidding scheme to create a standard bidding strategy or the `bidding_strategy` field to create a portfolio bidding strategy. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "COMMISSION" "ENHANCED_CPC" "FIXED_CPM" "FIXED_SHARE_OF_VOICE" "INVALID" "MANUAL_CPA" "MANUAL_CPC" "MANUAL_CPM" "MANUAL_CPV" "MAXIMIZE_CONVERSIONS" "MAXIMIZE_CONVERSION_VALUE" "PAGE_ONE_PROMOTED" "PERCENT_CPC" "TARGET_CPA" "TARGET_CPC" "TARGET_CPM" "TARGET_CPV" "TARGET_IMPRESSION_SHARE" "TARGET_OUTRANK_SHARE" "TARGET_ROAS" "TARGET_SPEND" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/feedTypes> ;
    sh:name "feed types" ;
    sh:description "Output only. Types of feeds that are attached directly to this campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PAGE_FEED" "DYNAMIC_EDUCATION" "MERCHANT_CENTER_FEED" "DYNAMIC_REAL_ESTATE" "DYNAMIC_CUSTOM" "DYNAMIC_HOTELS_AND_RENTALS" "DYNAMIC_FLIGHTS" "DYNAMIC_TRAVEL" "DYNAMIC_LOCAL" "DYNAMIC_JOBS" "LOCATION_SYNC" "BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP" "CHAIN_DYNAMIC_LOCATION_GROUP" "STATIC_LOCATION_GROUP" "HOTEL_PROPERTY" "TRAVEL_FEED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/brandGuidelines> ;
    sh:name "brand guidelines" ;
    sh:description "These settings control how your brand appears in automatically generated assets and formats within this campaign. Note: These settings can only be used for Performance Max campaigns that have Brand Guidelines enabled." ;
    sh:node googleads:CampaignBrandGuidelinesShape ;
    sh:class googleads:CampaignBrandGuidelines ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/manualCpv> ;
    sh:name "manual cpv" ;
    sh:description "A bidding strategy that pays a configurable amount per video view." ;
    sh:node googleads:ManualCpvShape ;
    sh:class googleads:ManualCpv ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/missingEuPoliticalAdvertisingDeclaration> ;
    sh:name "missing eu political advertising declaration" ;
    sh:description "Output only. Indicates whether this campaign is missing a declaration about whether it contains political advertising targeted towards the EU and is ineligible for any exemptions. If this field is true, use the contains_eu_political_advertising field to add the required declaration. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/containsEuPoliticalAdvertising> ;
    sh:name "contains eu political advertising" ;
    sh:description "The advertiser should self-declare whether this campaign contains political advertising content targeted towards the European Union." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CONTAINS_EU_POLITICAL_ADVERTISING" "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/excludedParentAssetSetTypes> ;
    sh:name "excluded parent asset set types" ;
    sh:description "The asset set types that should be excluded from this campaign. Asset set links with these types will not be inherited by this campaign from the upper level. Location group types (GMB_DYNAMIC_LOCATION_GROUP, CHAIN_DYNAMIC_LOCATION_GROUP, and STATIC_LOCATION_GROUP) are child types of LOCATION_SYNC. Therefore, if LOCATION_SYNC is set for this field, all location group asset sets are not allowed to be linked to this campaign, and all Location Extension (LE) and Affiliate Location Extensions (ALE) will not be served under this campaign. Only LOCATION_SYNC is currently supported." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PAGE_FEED" "DYNAMIC_EDUCATION" "MERCHANT_CENTER_FEED" "DYNAMIC_REAL_ESTATE" "DYNAMIC_CUSTOM" "DYNAMIC_HOTELS_AND_RENTALS" "DYNAMIC_FLIGHTS" "DYNAMIC_TRAVEL" "DYNAMIC_LOCAL" "DYNAMIC_JOBS" "LOCATION_SYNC" "BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP" "CHAIN_DYNAMIC_LOCATION_GROUP" "STATIC_LOCATION_GROUP" "HOTEL_PROPERTY" "TRAVEL_FEED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/manualCpm> ;
    sh:name "manual cpm" ;
    sh:description "Standard Manual CPM bidding strategy. Manual impression-based bidding where user pays per thousand impressions." ;
    sh:node googleads:ManualCpmShape ;
    sh:class googleads:ManualCpm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/frequencyCaps> ;
    sh:name "frequency caps" ;
    sh:description "A list that limits how often each user will see this campaign's ads." ;
    sh:node googleads:FrequencyCapEntryShape ;
    sh:class googleads:FrequencyCapEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/manualCpa> ;
    sh:name "manual cpa" ;
    sh:description "Standard Manual CPA bidding strategy. Manual bidding strategy that allows advertiser to set the bid per advertiser-specified action. Supported only for Local Services campaigns." ;
    sh:node googleads:ManualCpaShape ;
    sh:class googleads:ManualCpa ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/videoCampaignSettings> ;
    sh:name "video campaign settings" ;
    sh:description "Settings for Video campaign." ;
    sh:node googleads:CampaignVideoCampaignSettingsShape ;
    sh:class googleads:CampaignVideoCampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/excludedParentAssetFieldTypes> ;
    sh:name "excluded parent asset field types" ;
    sh:description "The asset field types that should be excluded from this campaign. Asset links with these field types will not be inherited by this campaign from the upper level." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/shoppingSetting> ;
    sh:name "shopping setting" ;
    sh:description "The setting for controlling Shopping campaigns." ;
    sh:node googleads:CampaignShoppingSettingShape ;
    sh:class googleads:CampaignShoppingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/name> ;
    sh:name "name" ;
    sh:description "The name of the campaign. This field is required and should not be empty when creating new campaigns. It must not contain any null (code point 0x0), NL line feed (code point 0xA) or carriage return (code point 0xD) characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/textGuidelines> ;
    sh:name "text guidelines" ;
    sh:description "Settings to control automatically generated text assets. Only available in Performance Max and Search campaigns (Brand Guidelines does not need to be enabled)." ;
    sh:node googleads:CampaignTextGuidelinesShape ;
    sh:class googleads:CampaignTextGuidelines ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/campaignGroup> ;
    sh:name "campaign group" ;
    sh:description "The resource name of the campaign group that this campaign belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/dynamicSearchAdsSetting> ;
    sh:name "dynamic search ads setting" ;
    sh:description "The setting for controlling Dynamic Search Ads (DSA)." ;
    sh:node googleads:CampaignDynamicSearchAdsSettingShape ;
    sh:class googleads:CampaignDynamicSearchAdsSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/servingStatus> ;
    sh:name "serving status" ;
    sh:description "Output only. The ad serving status of the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SERVING" "NONE" "ENDED" "PENDING" "SUSPENDED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/adServingOptimizationStatus> ;
    sh:name "ad serving optimization status" ;
    sh:description "The ad serving optimization status of the campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OPTIMIZE" "CONVERSION_OPTIMIZE" "ROTATE" "ROTATE_INDEFINITELY" "UNAVAILABLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/appCampaignSetting> ;
    sh:name "app campaign setting" ;
    sh:description "The setting related to App Campaign." ;
    sh:node googleads:CampaignAppCampaignSettingShape ;
    sh:class googleads:CampaignAppCampaignSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/commission> ;
    sh:name "commission" ;
    sh:description "Commission is an automatic bidding strategy in which the advertiser pays a certain portion of the conversion value." ;
    sh:node googleads:CommissionShape ;
    sh:class googleads:Commission ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/geoTargetTypeSetting> ;
    sh:name "geo target type setting" ;
    sh:description "The setting for ads geotargeting." ;
    sh:node googleads:CampaignGeoTargetTypeSettingShape ;
    sh:class googleads:CampaignGeoTargetTypeSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/localCampaignSetting> ;
    sh:name "local campaign setting" ;
    sh:description "The setting for local campaign." ;
    sh:node googleads:CampaignLocalCampaignSettingShape ;
    sh:class googleads:CampaignLocalCampaignSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/performanceMaxUpgrade> ;
    sh:name "performance max upgrade" ;
    sh:description "Output only. Information about campaigns being upgraded to Performance Max." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignPerformanceMaxUpgradeShape ;
    sh:class googleads:CampaignPerformanceMaxUpgrade ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/realTimeBiddingSetting> ;
    sh:name "real time bidding setting" ;
    sh:description "Settings for Real-Time Bidding, a feature only available for campaigns targeting the Ad Exchange network." ;
    sh:node googleads:RealTimeBiddingSettingShape ;
    sh:class googleads:RealTimeBiddingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "Suffix used to append query parameters to landing pages that are served with parallel tracking." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Campaign/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. The primary status of the campaign. Provides insight into why a campaign is not serving or not serving optimally. Modification to the campaign and its related entities might take a while to be reflected in this status." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "ENDED" "PENDING" "MISCONFIGURED" "LIMITED" "LEARNING" "NOT_ELIGIBLE" ) ;
  ] .

# Shape for Target Cpm
googleads:TargetCpmShape a sh:NodeShape ;
  sh:targetClass googleads:TargetCpm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpm/targetFrequencyGoal> ;
    sh:name "target frequency goal" ;
    sh:description "Target Frequency bidding goal details." ;
    sh:node googleads:TargetCpmTargetFrequencyGoalShape ;
    sh:class googleads:TargetCpmTargetFrequencyGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Cpm Target Frequency Goal
googleads:TargetCpmTargetFrequencyGoalShape a sh:NodeShape ;
  sh:targetClass googleads:TargetCpmTargetFrequencyGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpmTargetFrequencyGoal/targetCount> ;
    sh:name "target count" ;
    sh:description "Target Frequency count representing how many times you want to reach a single user." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpmTargetFrequencyGoal/timeUnit> ;
    sh:name "time unit" ;
    sh:description "Time window expressing the period over which you want to reach the specified target_count." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEEKLY" "MONTHLY" ) ;
  ] .

# Shape for Fixed Cpm
googleads:FixedCpmShape a sh:NodeShape ;
  sh:targetClass googleads:FixedCpm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FixedCpm/goal> ;
    sh:name "goal" ;
    sh:description "Fixed CPM bidding goal. Determines the exact bidding optimization parameters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REACH" "TARGET_FREQUENCY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FixedCpm/targetFrequencyInfo> ;
    sh:name "target frequency info" ;
    sh:description "Target frequency bidding goal details." ;
    sh:node googleads:FixedCpmTargetFrequencyGoalInfoShape ;
    sh:class googleads:FixedCpmTargetFrequencyGoalInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Fixed Cpm Target Frequency Goal Info
googleads:FixedCpmTargetFrequencyGoalInfoShape a sh:NodeShape ;
  sh:targetClass googleads:FixedCpmTargetFrequencyGoalInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FixedCpmTargetFrequencyGoalInfo/targetCount> ;
    sh:name "target count" ;
    sh:description "Target frequency count represents the number of times an advertiser wants to show the ad to target a single user." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FixedCpmTargetFrequencyGoalInfo/timeUnit> ;
    sh:name "time unit" ;
    sh:description "Time window expressing the period over which you want to reach the specified target_count." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MONTHLY" ) ;
  ] .

# Shape for Target Cpc
googleads:TargetCpcShape a sh:NodeShape ;
  sh:targetClass googleads:TargetCpc ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetCpc/targetCpcMicros> ;
    sh:name "target cpc micros" ;
    sh:description "Average CPC target. This target should be greater than or equal to minimum billable unit based on the currency for the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Pmax Campaign Settings
googleads:CampaignPmaxCampaignSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignPmaxCampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignPmaxCampaignSettings/brandTargetingOverrides> ;
    sh:name "brand targeting overrides" ;
    sh:description "Overrides of brand targeting for various ad types." ;
    sh:node googleads:CampaignPmaxCampaignSettingsBrandTargetingOverridesShape ;
    sh:class googleads:CampaignPmaxCampaignSettingsBrandTargetingOverrides ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignPmaxCampaignSettings/localServicesEnabled> ;
    sh:name "local services enabled" ;
    sh:description "Output only. Indicates whether the Performance Max campaign is a Local Services campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignPmaxCampaignSettings/localServicesPmaxCampaignSettings> ;
    sh:name "local services pmax campaign settings" ;
    sh:description "The Local Services Campaign related settings. Only updates are available for existing Local Services Pmax campaigns." ;
    sh:node googleads:CampaignLocalServicesPmaxCampaignSettingsShape ;
    sh:class googleads:CampaignLocalServicesPmaxCampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Pmax Campaign Settings Brand Targeting Overrides
googleads:CampaignPmaxCampaignSettingsBrandTargetingOverridesShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignPmaxCampaignSettingsBrandTargetingOverrides ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignPmaxCampaignSettingsBrandTargetingOverrides/ignoreExclusionsForShoppingAds> ;
    sh:name "ignore exclusions for shopping ads" ;
    sh:description "If true, brand exclusions are ignored for Shopping ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Local Services Pmax Campaign Settings
googleads:CampaignLocalServicesPmaxCampaignSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignLocalServicesPmaxCampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLocalServicesPmaxCampaignSettings/navigationalQueryLeadsEnabled> ;
    sh:name "navigational query leads enabled" ;
    sh:description "Whether to use navigational query filter." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLocalServicesPmaxCampaignSettings/foundingYear> ;
    sh:name "founding year" ;
    sh:description "Founding year of the business." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLocalServicesPmaxCampaignSettings/countryCode> ;
    sh:name "country code" ;
    sh:description "Immutable. Country code of the Local Services Ad. Set once during Ad Creation and used to determine verification requirements and validate location criterion selection; upper-case, two-letter codes as defined by ISO-3166." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLocalServicesPmaxCampaignSettings/phoneNumbers> ;
    sh:name "phone numbers" ;
    sh:description "List of phone numbers associated with the provider." ;
    sh:node googleads:LocalServicesPhoneNumberShape ;
    sh:class googleads:LocalServicesPhoneNumber ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Local Services Phone Number
googleads:LocalServicesPhoneNumberShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesPhoneNumber ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesPhoneNumber/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "The phone number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesPhoneNumber/countryCode> ;
    sh:name "country code" ;
    sh:description "Upper-case, two-letter codes as defined by ISO-3166." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesPhoneNumber/phoneNumberType> ;
    sh:name "phone number type" ;
    sh:description "The type of the phone number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DESTINATION_PHONE_NUMBER_FOR_ADS" "DESTINATION_PHONE_NUMBER_FOR_SMS_ONLY" "DESTINATION_PHONE_NUMBER_FOR_WHATSAPP_ONLY" ) ;
  ] .

# Shape for Campaign Audience Setting
googleads:CampaignAudienceSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAudienceSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAudienceSetting/useAudienceGrouped> ;
    sh:name "use audience grouped" ;
    sh:description "Immutable. If true, this campaign uses an Audience resource for audience targeting. If false, this campaign may use audience segment criteria instead." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Demand Gen Campaign Settings
googleads:CampaignDemandGenCampaignSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignDemandGenCampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDemandGenCampaignSettings/upgradedTargeting> ;
    sh:name "upgraded targeting" ;
    sh:description "Immutable. Specifies whether this campaign uses upgraded targeting options. When this field is set to `true`, you can use location and language targeting at the ad group level as opposed to the standard campaign-level targeting. This field defaults to `true`, and can only be set when creating a campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Target Cpv
googleads:TargetCpvShape a sh:NodeShape ;
  sh:targetClass googleads:TargetCpv .

# Shape for Campaign Hotel Setting Info
googleads:CampaignHotelSettingInfoShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignHotelSettingInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignHotelSettingInfo/hotelCenterId> ;
    sh:name "hotel center id" ;
    sh:description "The linked Hotel Center account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignHotelSettingInfo/disableHotelSetting> ;
    sh:name "disable hotel setting" ;
    sh:description "Disable the optional hotel setting. This field is currently supported only for Demand Gen campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Selective Optimization
googleads:CampaignSelectiveOptimizationShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignSelectiveOptimization ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSelectiveOptimization/conversionActions> ;
    sh:name "conversion actions" ;
    sh:description "The selected set of resource names for conversion actions for optimizing this campaign." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Optimization Goal Setting
googleads:CampaignOptimizationGoalSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignOptimizationGoalSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignOptimizationGoalSetting/optimizationGoalTypes> ;
    sh:name "optimization goal types" ;
    sh:description "The list of optimization goal types." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CALL_CLICKS" "DRIVING_DIRECTIONS" "APP_PRE_REGISTRATION" ) ;
  ] .

# Shape for Campaign Local Services Campaign Settings
googleads:CampaignLocalServicesCampaignSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignLocalServicesCampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLocalServicesCampaignSettings/categoryBids> ;
    sh:name "category bids" ;
    sh:description "Categorical level bids associated with MANUAL_CPA bidding strategy." ;
    sh:node googleads:CampaignCategoryBidShape ;
    sh:class googleads:CampaignCategoryBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Category Bid
googleads:CampaignCategoryBidShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignCategoryBid ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCategoryBid/categoryId> ;
    sh:name "category id" ;
    sh:description "Category for which the bid will be associated with. For example, xcat:service_area_business_plumber." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCategoryBid/targetCpaBidMicros> ;
    sh:name "target cpa bid micros" ;
    sh:description "Target CPA bid for the category. Value is in micros and in the advertiser's currency." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCategoryBid/manualCpaBidMicros> ;
    sh:name "manual cpa bid micros" ;
    sh:description "Manual CPA bid for the category. Bid must be greater than the reserve price associated for that category. Value is in micros and in the advertiser's currency." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Asset Automation Setting
googleads:CampaignAssetAutomationSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAssetAutomationSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAssetAutomationSetting/assetAutomationType> ;
    sh:name "asset automation type" ;
    sh:description "The asset automation type advertiser would like to opt-in/out." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TEXT_ASSET_AUTOMATION" "GENERATE_VERTICAL_YOUTUBE_VIDEOS" "GENERATE_SHORTER_YOUTUBE_VIDEOS" "GENERATE_LANDING_PAGE_PREVIEW" "GENERATE_LANDING_PAGE_TEXT" "GENERATE_ENHANCED_YOUTUBE_VIDEOS" "GENERATE_IMAGE_ENHANCEMENT" "GENERATE_IMAGE_EXTRACTION" "GENERATE_DESIGN_VERSIONS_FOR_IMAGES" "FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION" "GENERATE_VIDEOS_FROM_OTHER_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAssetAutomationSetting/assetAutomationStatus> ;
    sh:name "asset automation status" ;
    sh:description "The opt-in/out status of asset automation type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OPTED_IN" "OPTED_OUT" ) ;
  ] .

# Shape for Manual Cpc
googleads:ManualCpcShape a sh:NodeShape ;
  sh:targetClass googleads:ManualCpc ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ManualCpc/enhancedCpcEnabled> ;
    sh:name "enhanced cpc enabled" ;
    sh:description "Whether bids are to be enhanced based on conversion optimizer data." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Percent Cpc
googleads:PercentCpcShape a sh:NodeShape ;
  sh:targetClass googleads:PercentCpc ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpc/enhancedCpcEnabled> ;
    sh:name "enhanced cpc enabled" ;
    sh:description "Adjusts the bid for each auction upward or downward, depending on the likelihood of a conversion. Individual bids may exceed cpc_bid_ceiling_micros, but the average bid amount for a campaign should not." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PercentCpc/cpcBidCeilingMicros> ;
    sh:name "cpc bid ceiling micros" ;
    sh:description "Maximum bid limit that can be set by the bid strategy. This is an optional field entered by the advertiser and specified in local micros. Note: A zero value is interpreted in the same way as having bid_ceiling undefined." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Travel Campaign Settings
googleads:CampaignTravelCampaignSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignTravelCampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignTravelCampaignSettings/travelAccountId> ;
    sh:name "travel account id" ;
    sh:description "Immutable. The Travel account ID associated with the Travel campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Third Party Integration Partners
googleads:CampaignThirdPartyIntegrationPartnersShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignThirdPartyIntegrationPartners ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyIntegrationPartners/viewabilityIntegrationPartners> ;
    sh:name "viewability integration partners" ;
    sh:description "Third party integration partners for YouTube viewability verification for this Campaign." ;
    sh:node googleads:CampaignThirdPartyViewabilityIntegrationPartnerShape ;
    sh:class googleads:CampaignThirdPartyViewabilityIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyIntegrationPartners/brandLiftIntegrationPartners> ;
    sh:name "brand lift integration partners" ;
    sh:description "Third party integration partners for Brand Lift verification for this Campaign." ;
    sh:node googleads:CampaignThirdPartyBrandLiftIntegrationPartnerShape ;
    sh:class googleads:CampaignThirdPartyBrandLiftIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyIntegrationPartners/reachIntegrationPartners> ;
    sh:name "reach integration partners" ;
    sh:description "Third party integration partners for reach verification for this Campaign." ;
    sh:node googleads:CampaignThirdPartyReachIntegrationPartnerShape ;
    sh:class googleads:CampaignThirdPartyReachIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyIntegrationPartners/brandSafetyIntegrationPartners> ;
    sh:name "brand safety integration partners" ;
    sh:description "Third party integration partners for brand safety verification for this Campaign." ;
    sh:node googleads:CampaignThirdPartyBrandSafetyIntegrationPartnerShape ;
    sh:class googleads:CampaignThirdPartyBrandSafetyIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Third Party Viewability Integration Partner
googleads:CampaignThirdPartyViewabilityIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignThirdPartyViewabilityIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyViewabilityIntegrationPartner/viewabilityIntegrationPartnerData> ;
    sh:name "viewability integration partner data" ;
    sh:description "Third party partner data for YouTube viewability verification. This is optional metadata for partners to join or attach data to Ads campaigns." ;
    sh:node googleads:ThirdPartyIntegrationPartnerDataShape ;
    sh:class googleads:ThirdPartyIntegrationPartnerData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyViewabilityIntegrationPartner/shareCost> ;
    sh:name "share cost" ;
    sh:description "If true, then cost data will be shared with this vendor." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyViewabilityIntegrationPartner/viewabilityIntegrationPartner> ;
    sh:name "viewability integration partner" ;
    sh:description "Allowed third party integration partners for YouTube viewability verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DOUBLE_VERIFY" "INTEGRAL_AD_SCIENCE" "ZEFR" ) ;
  ] .

# Shape for Third Party Integration Partner Data
googleads:ThirdPartyIntegrationPartnerDataShape a sh:NodeShape ;
  sh:targetClass googleads:ThirdPartyIntegrationPartnerData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ThirdPartyIntegrationPartnerData/thirdPartyPlacementId> ;
    sh:name "third party placement id" ;
    sh:description "The third party placement ID that maps the measurement partner data with a campaign (or a group of related campaigns) specific data." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ThirdPartyIntegrationPartnerData/clientId> ;
    sh:name "client id" ;
    sh:description "The client ID that allows the measurement partner to join multiple campaigns for a particular advertiser." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Third Party Brand Lift Integration Partner
googleads:CampaignThirdPartyBrandLiftIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignThirdPartyBrandLiftIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyBrandLiftIntegrationPartner/brandLiftIntegrationPartnerData> ;
    sh:name "brand lift integration partner data" ;
    sh:description "Third party partner data for YouTube Brand Lift verification. This is optional metadata for partners to join or attach data to Ads campaigns." ;
    sh:node googleads:ThirdPartyIntegrationPartnerDataShape ;
    sh:class googleads:ThirdPartyIntegrationPartnerData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyBrandLiftIntegrationPartner/brandLiftIntegrationPartner> ;
    sh:name "brand lift integration partner" ;
    sh:description "Allowed third party integration partners for Brand Lift verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KANTAR_MILLWARD_BROWN" "DYNATA" "INTAGE" "MACROMILL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyBrandLiftIntegrationPartner/shareCost> ;
    sh:name "share cost" ;
    sh:description "If true, then cost data will be shared with this vendor." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Third Party Reach Integration Partner
googleads:CampaignThirdPartyReachIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignThirdPartyReachIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyReachIntegrationPartner/shareCost> ;
    sh:name "share cost" ;
    sh:description "If true, then cost data will be shared with this vendor." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyReachIntegrationPartner/reachIntegrationPartner> ;
    sh:name "reach integration partner" ;
    sh:description "Allowed third party integration partners for reach verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NIELSEN" "COMSCORE" "KANTAR_MILLWARD_BROWN" "VIDEO_RESEARCH" "GEMIUS" "MEDIA_SCOPE" "AUDIENCE_PROJECT" "VIDEO_AMP" "ISPOT_TV" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyReachIntegrationPartner/reachIntegrationPartnerData> ;
    sh:name "reach integration partner data" ;
    sh:description "Third party partner data for YouTube Reach verification. This is optional metadata for partners to join or attach data to Ads campaigns." ;
    sh:node googleads:ThirdPartyIntegrationPartnerDataShape ;
    sh:class googleads:ThirdPartyIntegrationPartnerData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Third Party Brand Safety Integration Partner
googleads:CampaignThirdPartyBrandSafetyIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignThirdPartyBrandSafetyIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyBrandSafetyIntegrationPartner/brandSafetyIntegrationPartner> ;
    sh:name "brand safety integration partner" ;
    sh:description "Allowed third party integration partners for brand safety verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DOUBLE_VERIFY" "INTEGRAL_AD_SCIENCE" "ZEFR" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignThirdPartyBrandSafetyIntegrationPartner/brandSafetyIntegrationPartnerData> ;
    sh:name "brand safety integration partner data" ;
    sh:description "Third party partner data for YouTube brand safety verification. This is optional metadata for partners to join or attach data to Ads campaigns." ;
    sh:node googleads:ThirdPartyIntegrationPartnerDataShape ;
    sh:class googleads:ThirdPartyIntegrationPartnerData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Ai Max Setting
googleads:CampaignAiMaxSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAiMaxSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAiMaxSetting/enableAiMax> ;
    sh:name "enable ai max" ;
    sh:description "Controls whether or not AI Max features are served for this campaign. Individual AI Max features are enabled or disabled by their respective settings. But if enable_ai_max is set to false or cleared, then no AI Max features will serve for this campaign, regardless of the other settings. Supported in Search and Shopping campaigns. For Search campaigns, Search Term Matching is enabled by default when AI Max is enabled, and can be disabled at the ad group level. For Shopping campaigns, Text customization is always enabled when AI Max is enabled." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAiMaxSetting/bundlingRequired> ;
    sh:name "bundling required" ;
    sh:description "Output only. Search campaigns only. Indicates whether a campaign has adopted AI Max before, and is required to have AI Max enabled to adopt campaign-level text asset automation and brand list targeting in all API versions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOT_REQUIRED" "REQUIRED" ) ;
  ] .

# Shape for Campaign Network Settings
googleads:CampaignNetworkSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignNetworkSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignNetworkSettings/targetGoogleSearch> ;
    sh:name "target google search" ;
    sh:description "Whether ads will be served with google.com search results." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignNetworkSettings/targetSearchNetwork> ;
    sh:name "target search network" ;
    sh:description "Whether ads will be served on sites in the Google Search Partners Network (requires `target_google_search` to also be `true`)." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignNetworkSettings/targetGoogleTvNetwork> ;
    sh:name "target google tv network" ;
    sh:description "Whether ads will be served on the Google TV network." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignNetworkSettings/targetYoutube> ;
    sh:name "target youtube" ;
    sh:description "Whether ads will be served on YouTube." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignNetworkSettings/targetContentNetwork> ;
    sh:name "target content network" ;
    sh:description "Whether ads will be served on specified placements in the Google Display Network. Placements are specified using the Placement criterion." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignNetworkSettings/targetPartnerSearchNetwork> ;
    sh:name "target partner search network" ;
    sh:description "Whether ads will be served on the partner network. This is available only to some select partner accounts. Unless you have been instructed to use this field, it likely does not apply to your account. This does not control whether ads will be served on Google Search Partners Network; use `target_search_network` for that instead." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Tracking Setting
googleads:CampaignTrackingSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignTrackingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignTrackingSetting/trackingUrl> ;
    sh:name "tracking url" ;
    sh:description "Output only. The url used for dynamic tracking." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Vanity Pharma
googleads:CampaignVanityPharmaShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVanityPharma ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVanityPharma/vanityPharmaDisplayUrlMode> ;
    sh:name "vanity pharma display url mode" ;
    sh:description "The display mode for vanity pharma URLs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MANUFACTURER_WEBSITE_URL" "WEBSITE_DESCRIPTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVanityPharma/vanityPharmaText> ;
    sh:name "vanity pharma text" ;
    sh:description "The text that will be displayed in display URL of the text ad when website description is the selected display mode for vanity pharma URLs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PRESCRIPTION_TREATMENT_WEBSITE_EN" "PRESCRIPTION_TREATMENT_WEBSITE_ES" "PRESCRIPTION_DEVICE_WEBSITE_EN" "PRESCRIPTION_DEVICE_WEBSITE_ES" "MEDICAL_DEVICE_WEBSITE_EN" "MEDICAL_DEVICE_WEBSITE_ES" "PREVENTATIVE_TREATMENT_WEBSITE_EN" "PREVENTATIVE_TREATMENT_WEBSITE_ES" "PRESCRIPTION_CONTRACEPTION_WEBSITE_EN" "PRESCRIPTION_CONTRACEPTION_WEBSITE_ES" "PRESCRIPTION_VACCINE_WEBSITE_EN" "PRESCRIPTION_VACCINE_WEBSITE_ES" ) ;
  ] .

# Shape for Campaign Brand Guidelines
googleads:CampaignBrandGuidelinesShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignBrandGuidelines ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBrandGuidelines/accentColor> ;
    sh:name "accent color" ;
    sh:description "The accent brand color, entered as a hex code (e.g., #00ff00). You must provide the accent_color if you provide a main_color." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBrandGuidelines/predefinedFontFamily> ;
    sh:name "predefined font family" ;
    sh:description "The brand's font family. Must be one of the following Google Fonts (case sensitive): Open Sans, Roboto, Montserrat, Poppins, Lato, Oswald, Playfair Display, Roboto Slab." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBrandGuidelines/mainColor> ;
    sh:name "main color" ;
    sh:description "The main brand color, entered as a hex code (e.g., #00ff00). You must provide the main_color if you provide an accent_color." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Manual Cpv
googleads:ManualCpvShape a sh:NodeShape ;
  sh:targetClass googleads:ManualCpv .

# Shape for Manual Cpm
googleads:ManualCpmShape a sh:NodeShape ;
  sh:targetClass googleads:ManualCpm .

# Shape for Frequency Cap Entry
googleads:FrequencyCapEntryShape a sh:NodeShape ;
  sh:targetClass googleads:FrequencyCapEntry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FrequencyCapEntry/key> ;
    sh:name "key" ;
    sh:description "The key of a particular frequency cap. There can be no more than one frequency cap with the same key." ;
    sh:node googleads:FrequencyCapKeyShape ;
    sh:class googleads:FrequencyCapKey ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FrequencyCapEntry/cap> ;
    sh:name "cap" ;
    sh:description "Maximum number of events allowed during the time range by this cap." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Frequency Cap Key
googleads:FrequencyCapKeyShape a sh:NodeShape ;
  sh:targetClass googleads:FrequencyCapKey ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FrequencyCapKey/level> ;
    sh:name "level" ;
    sh:description "The level on which the cap is to be applied (for example, ad group ad, ad group). The cap is applied to all the entities of this level." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AD_GROUP_AD" "AD_GROUP" "CAMPAIGN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FrequencyCapKey/eventType> ;
    sh:name "event type" ;
    sh:description "The type of event that the cap applies to (for example, impression)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IMPRESSION" "VIDEO_VIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FrequencyCapKey/timeUnit> ;
    sh:name "time unit" ;
    sh:description "Unit of time the cap is defined at (for example, day, week)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DAY" "WEEK" "MONTH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FrequencyCapKey/timeLength> ;
    sh:name "time length" ;
    sh:description "Number of time units the cap lasts." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Manual Cpa
googleads:ManualCpaShape a sh:NodeShape ;
  sh:targetClass googleads:ManualCpa .

# Shape for Campaign Video Campaign Settings
googleads:CampaignVideoCampaignSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettings/videoAdFormatControl> ;
    sh:name "video ad format control" ;
    sh:description "Format-restricting control enabling usage of video responsive ads in format defined Video campaigns (for example, non-skippable)." ;
    sh:node googleads:CampaignVideoCampaignSettingsVideoAdFormatControlShape ;
    sh:class googleads:CampaignVideoCampaignSettingsVideoAdFormatControl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettings/videoAdSequence> ;
    sh:name "video ad sequence" ;
    sh:description "Container for video ads sequencing definition." ;
    sh:node googleads:CampaignVideoCampaignSettingsVideoAdSequenceShape ;
    sh:class googleads:CampaignVideoCampaignSettingsVideoAdSequence ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettings/bookingDetails> ;
    sh:name "booking details" ;
    sh:description "Output only. Booking information for campaigns with the FIXED_CPM or FIXED_SHARE_OF_VOICE bidding strategies." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignVideoCampaignSettingsBookingDetailsShape ;
    sh:class googleads:CampaignVideoCampaignSettingsBookingDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettings/reservationAdCategorySelfDisclosure> ;
    sh:name "reservation ad category self disclosure" ;
    sh:description "Ad category self-disclosure for campaigns with the FIXED_CPM or FIXED_SHARE_OF_VOICE bidding strategies." ;
    sh:node googleads:CampaignVideoCampaignSettingsReservationAdCategorySelfDisclosureShape ;
    sh:class googleads:CampaignVideoCampaignSettingsReservationAdCategorySelfDisclosure ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettings/videoAdInventoryControl> ;
    sh:name "video ad inventory control" ;
    sh:description "Inventory control for video responsive ads in reach campaigns." ;
    sh:node googleads:CampaignVideoCampaignSettingsVideoAdInventoryControlShape ;
    sh:class googleads:CampaignVideoCampaignSettingsVideoAdInventoryControl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Video Campaign Settings Video Ad Format Control
googleads:CampaignVideoCampaignSettingsVideoAdFormatControlShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettingsVideoAdFormatControl ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdFormatControl/formatRestriction> ;
    sh:name "format restriction" ;
    sh:description "All contained responsive ads are expected to respect this restriction." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NON_SKIPPABLE_IN_STREAM" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdFormatControl/nonSkippableInStreamRestrictions> ;
    sh:name "non skippable in stream restrictions" ;
    sh:description "Restrictions for non-skippable format." ;
    sh:node googleads:CampaignVideoCampaignSettingsNonSkippableInStreamRestrictionsShape ;
    sh:class googleads:CampaignVideoCampaignSettingsNonSkippableInStreamRestrictions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Video Campaign Settings Non Skippable In Stream Restrictions
googleads:CampaignVideoCampaignSettingsNonSkippableInStreamRestrictionsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettingsNonSkippableInStreamRestrictions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsNonSkippableInStreamRestrictions/minDuration> ;
    sh:name "min duration" ;
    sh:description "The minimum allowed duration for non-skippable ads." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MIN_DURATION_FIVE_SECONDS" "MIN_DURATION_SEVEN_SECONDS" "MIN_DURATION_SIXTEEN_SECONDS" "MIN_DURATION_THIRTY_ONE_SECONDS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsNonSkippableInStreamRestrictions/maxDuration> ;
    sh:name "max duration" ;
    sh:description "The maximum allowed duration for non-skippable ads." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MAX_DURATION_FIFTEEN_SECONDS" "MAX_DURATION_THIRTY_SECONDS" "MAX_DURATION_SIXTY_SECONDS" ) ;
  ] .

# Shape for Campaign Video Campaign Settings Video Ad Sequence
googleads:CampaignVideoCampaignSettingsVideoAdSequenceShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettingsVideoAdSequence ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdSequence/minimumDuration> ;
    sh:name "minimum duration" ;
    sh:description "Users are eligible to repeat sequence after this period. Defaults to WEEK if not specified." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEEK" "MONTH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdSequence/steps> ;
    sh:name "steps" ;
    sh:description "The list of sequence steps and data associated with them." ;
    sh:node googleads:CampaignVideoCampaignSettingsVideoAdSequenceStepShape ;
    sh:class googleads:CampaignVideoCampaignSettingsVideoAdSequenceStep ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Video Campaign Settings Video Ad Sequence Step
googleads:CampaignVideoCampaignSettingsVideoAdSequenceStepShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettingsVideoAdSequenceStep ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdSequenceStep/previousStepInteractionType> ;
    sh:name "previous step interaction type" ;
    sh:description "Type of interaction *on the previous step* required in order for the user to advance to this step. As with the previous step ID, it's required for every step except for the first one." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PAID_VIEW" "SKIP" "IMPRESSION" "ENGAGED_IMPRESSION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdSequenceStep/adGroupType> ;
    sh:name "ad group type" ;
    sh:description "The ad group type for this step (denoting the video format)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH_STANDARD" "DISPLAY_STANDARD" "SHOPPING_PRODUCT_ADS" "HOTEL_ADS" "SHOPPING_SMART_ADS" "VIDEO_BUMPER" "VIDEO_TRUE_VIEW_IN_STREAM" "VIDEO_TRUE_VIEW_IN_DISPLAY" "VIDEO_NON_SKIPPABLE_IN_STREAM" "SEARCH_DYNAMIC_ADS" "SHOPPING_COMPARISON_LISTING_ADS" "PROMOTED_HOTEL_ADS" "VIDEO_RESPONSIVE" "VIDEO_EFFICIENT_REACH" "SMART_CAMPAIGN_ADS" "TRAVEL_ADS" "YOUTUBE_AUDIO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdSequenceStep/previousStepId> ;
    sh:name "previous step id" ;
    sh:description "The ID of the previous step. This field is required for all steps except the first one. It must point to a step that appears in the step definition list before this step." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdSequenceStep/videoAdSequenceStepId> ;
    sh:name "video ad sequence step id" ;
    sh:description "The ID of this sequence step." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdSequenceStep/assetId> ;
    sh:name "asset id" ;
    sh:description "The ID of the Asset for this step. The asset must be type YOUTUBE_VIDEO." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Video Campaign Settings Booking Details
googleads:CampaignVideoCampaignSettingsBookingDetailsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettingsBookingDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsBookingDetails/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the booking." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BOOKED" "HELD" "CAMPAIGN_ENDED" "HOLD_EXPIRED" "BOOKING_CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsBookingDetails/holdExpirationDateTime> ;
    sh:name "hold expiration date time" ;
    sh:description "Output only. Time until which booked inventory will be held or has been held for this campaign. Available for status HELD and HOLD_EXPIRED. Format is \"yyyy-MM-dd HH:mm:ss\" in the customer's time zone." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsBookingDetails/cancellationDateTime> ;
    sh:name "cancellation date time" ;
    sh:description "Output only. Time when the booked inventory of this campaign will be cancelled or has been cancelled. Available for primary status NOT_ELIGIBLE if the campaign will be cancelled and for primary status reason BOOKING_CANCELLED. Format is \"yyyy-MM-dd HH:mm:ss\" in the customer's time zone." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Video Campaign Settings Reservation Ad Category Self Disclosure
googleads:CampaignVideoCampaignSettingsReservationAdCategorySelfDisclosureShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettingsReservationAdCategorySelfDisclosure ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsReservationAdCategorySelfDisclosure/alcohol> ;
    sh:name "alcohol" ;
    sh:description "The campaign is expected to contain alcohol-related ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsReservationAdCategorySelfDisclosure/politics> ;
    sh:name "politics" ;
    sh:description "The campaign is expected to contain politics-related ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsReservationAdCategorySelfDisclosure/gambling> ;
    sh:name "gambling" ;
    sh:description "The campaign is expected to contain gambling-related ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Video Campaign Settings Video Ad Inventory Control
googleads:CampaignVideoCampaignSettingsVideoAdInventoryControlShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignVideoCampaignSettingsVideoAdInventoryControl ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdInventoryControl/allowNonSkippableInStream> ;
    sh:name "allow non skippable in stream" ;
    sh:description "Determine if video responsive ads can be used for non-skippable in-stream ads. This is only available for campaigns that allow mixing of non-skippable with other formats (Video reach campaign with Target Frequency bidding strategy goal)." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdInventoryControl/allowInStream> ;
    sh:name "allow in stream" ;
    sh:description "Determine if video responsive ads can be used for in-stream video ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdInventoryControl/allowInFeed> ;
    sh:name "allow in feed" ;
    sh:description "Determine if video responsive ads can be used for in-feed video ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignVideoCampaignSettingsVideoAdInventoryControl/allowShorts> ;
    sh:name "allow shorts" ;
    sh:description "Determine if video responsive ads can be used as shorts format." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Shopping Setting
googleads:CampaignShoppingSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignShoppingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/campaignPriority> ;
    sh:name "campaign priority" ;
    sh:description "Priority of the campaign. Campaigns with numerically higher priorities take precedence over those with lower priorities. This field is required for Shopping campaigns, with values between 0 and 2, inclusive. This field is optional for Smart Shopping campaigns, but must be equal to 3 if set." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/disableProductFeed> ;
    sh:name "disable product feed" ;
    sh:description "Disable the optional product feed. This field is currently supported only for Demand Gen campaigns. See https://support.google.com/google-ads/answer/13721750 to learn more about this feature." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/advertisingPartnerIds> ;
    sh:name "advertising partner ids" ;
    sh:description "The list of Google Ads accounts IDs of advertising partners cooperating within the campaign. This feature is currently available only for accounts having an advertising partner link. Once set, the field is immutable. This feature is currently supported only for Performance Max, Shopping, Search and Demand Gen campaign types." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/enableLocal> ;
    sh:name "enable local" ;
    sh:description "Whether to include local products." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Feed label of products to include in the campaign. Valid feed labels may contain a maximum of 20 characters including uppercase letters, numbers, hyphens, and underscores. If you previously used the deprecated `sales_country` in the two-letter country code (`XX`) format, the `feed_label` field should be used instead. For more information see the [feed label](//support.google.com/merchants/answer/12453549) support article." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/ignoreBrandExclusionInShoppingAds> ;
    sh:name "ignore brand exclusion in shopping ads" ;
    sh:description "If true, brand exclusions are ignored for Shopping ads. Only supported for Shopping campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/merchantId> ;
    sh:name "merchant id" ;
    sh:description "ID of the Merchant Center account. This field is required for create operations. This field is immutable for Shopping campaigns." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignShoppingSetting/useVehicleInventory> ;
    sh:name "use vehicle inventory" ;
    sh:description "Immutable. Whether to target Vehicle Listing inventory. This field is supported only in Smart Shopping Campaigns. For setting Vehicle Listing inventory in Performance Max campaigns, use `listing_type` instead." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Text Guidelines
googleads:CampaignTextGuidelinesShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignTextGuidelines ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignTextGuidelines/termExclusions> ;
    sh:name "term exclusions" ;
    sh:description "Exact words or phrases that will be excluded from generated text assets. At most 25 exclusions may be provided. Valid exclusions may contain a maximum of 30 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignTextGuidelines/messagingRestrictions> ;
    sh:name "messaging restrictions" ;
    sh:description "Freeform instructions that will be used to guide text asset generation using LLM inference. At most 40 restrictions may be provided." ;
    sh:node googleads:CampaignMessagingRestrictionShape ;
    sh:class googleads:CampaignMessagingRestriction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Messaging Restriction
googleads:CampaignMessagingRestrictionShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignMessagingRestriction ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignMessagingRestriction/restrictionText> ;
    sh:name "restriction text" ;
    sh:description "Freeform instructions to guide text asset generation using LLM inference. Valid instructions may contain a maximum of 300 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignMessagingRestriction/restrictionType> ;
    sh:name "restriction type" ;
    sh:description "Determines how the guideline is applied. Only `RESTRICTION_BASED_EXCLUSION` is currently supported." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "RESTRICTION_BASED_EXCLUSION" ) ;
  ] .

# Shape for Campaign Dynamic Search Ads Setting
googleads:CampaignDynamicSearchAdsSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignDynamicSearchAdsSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDynamicSearchAdsSetting/domainName> ;
    sh:name "domain name" ;
    sh:description "Required. The Internet domain name that this setting represents, for example, \"google.com\" or \"www.google.com\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDynamicSearchAdsSetting/languageCode> ;
    sh:name "language code" ;
    sh:description "Required. The language code specifying the language of the domain, for example, \"en\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDynamicSearchAdsSetting/useSuppliedUrlsOnly> ;
    sh:name "use supplied urls only" ;
    sh:description "Whether the campaign uses advertiser supplied URLs exclusively." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign App Campaign Setting
googleads:CampaignAppCampaignSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAppCampaignSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAppCampaignSetting/biddingStrategyGoalType> ;
    sh:name "bidding strategy goal type" ;
    sh:description "Represents the goal which the bidding strategy of this app campaign should optimize towards." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OPTIMIZE_INSTALLS_TARGET_INSTALL_COST" "OPTIMIZE_IN_APP_CONVERSIONS_TARGET_INSTALL_COST" "OPTIMIZE_IN_APP_CONVERSIONS_TARGET_CONVERSION_COST" "OPTIMIZE_RETURN_ON_ADVERTISING_SPEND" "OPTIMIZE_PRE_REGISTRATION_CONVERSION_VOLUME" "OPTIMIZE_INSTALLS_WITHOUT_TARGET_INSTALL_COST" "OPTIMIZE_IN_APP_CONVERSIONS_WITHOUT_TARGET_CPA" "OPTIMIZE_TOTAL_VALUE_WITHOUT_TARGET_ROAS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAppCampaignSetting/appId> ;
    sh:name "app id" ;
    sh:description "Immutable. A string that uniquely identifies a mobile application." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAppCampaignSetting/appStore> ;
    sh:name "app store" ;
    sh:description "Immutable. The application store that distributes this specific app." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPLE_APP_STORE" "GOOGLE_APP_STORE" ) ;
  ] .

# Shape for Commission
googleads:CommissionShape a sh:NodeShape ;
  sh:targetClass googleads:Commission ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Commission/commissionRateMicros> ;
    sh:name "commission rate micros" ;
    sh:description "Commission rate defines the portion of the conversion value that the advertiser will be billed. A commission rate of x should be passed into this field as (x * 1,000,000). For example, 106,000 represents a commission rate of 0.106 (10.6%)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Geo Target Type Setting
googleads:CampaignGeoTargetTypeSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignGeoTargetTypeSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGeoTargetTypeSetting/positiveGeoTargetType> ;
    sh:name "positive geo target type" ;
    sh:description "The setting used for positive geotargeting in this particular campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PRESENCE_OR_INTEREST" "SEARCH_INTEREST" "PRESENCE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGeoTargetTypeSetting/negativeGeoTargetType> ;
    sh:name "negative geo target type" ;
    sh:description "The setting used for negative geotargeting in this particular campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PRESENCE_OR_INTEREST" "PRESENCE" ) ;
  ] .

# Shape for Campaign Local Campaign Setting
googleads:CampaignLocalCampaignSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignLocalCampaignSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLocalCampaignSetting/locationSourceType> ;
    sh:name "location source type" ;
    sh:description "The location source type for this local campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GOOGLE_MY_BUSINESS" "AFFILIATE" ) ;
  ] .

# Shape for Campaign Performance Max Upgrade
googleads:CampaignPerformanceMaxUpgradeShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignPerformanceMaxUpgrade ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignPerformanceMaxUpgrade/performanceMaxCampaign> ;
    sh:name "performance max campaign" ;
    sh:description "Output only. The resource name of the Performance Max campaign the campaign is upgraded to." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignPerformanceMaxUpgrade/status> ;
    sh:name "status" ;
    sh:description "Output only. The upgrade status of a campaign requested to be upgraded to Performance Max." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UPGRADE_IN_PROGRESS" "UPGRADE_COMPLETE" "UPGRADE_FAILED" "UPGRADE_ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignPerformanceMaxUpgrade/preUpgradeCampaign> ;
    sh:name "pre upgrade campaign" ;
    sh:description "Output only. The resource name of the legacy campaign upgraded to Performance Max." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Real Time Bidding Setting
googleads:RealTimeBiddingSettingShape a sh:NodeShape ;
  sh:targetClass googleads:RealTimeBiddingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RealTimeBiddingSetting/optIn> ;
    sh:name "opt in" ;
    sh:description "Whether the campaign is opted in to real-time bidding." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Aggregate Asset View
googleads:CampaignAggregateAssetViewShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAggregateAssetView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAggregateAssetView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the campaign aggregate asset view. Campaign aggregate asset view resource names have the form: `customers/{customer_id}/campaignAggregateAssetViews/{Campaign.campaign_id}~{Asset.asset_id}~{AssetLinkSource.asset_link_source}~{AssetFieldType.field_type}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAggregateAssetView/assetSource> ;
    sh:name "asset source" ;
    sh:description "Output only. Source of the asset link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAggregateAssetView/fieldType> ;
    sh:name "field type" ;
    sh:description "Output only. FieldType of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAggregateAssetView/asset> ;
    sh:name "asset" ;
    sh:description "Output only. The ID of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAggregateAssetView/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. Campaign in which the asset served." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Asset
googleads:CampaignAssetShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign asset. CampaignAsset resource names have the form: `customers/{customer_id}/campaignAssets/{campaign_id}~{asset_id}~{field_type}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/fieldType> ;
    sh:name "field type" ;
    sh:description "Immutable. Role that the asset takes under the linked campaign. Required." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign to which the asset is linked." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/status> ;
    sh:name "status" ;
    sh:description "Status of the campaign asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "PAUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/asset> ;
    sh:name "asset" ;
    sh:description "Immutable. The asset which is linked to the campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/source> ;
    sh:name "source" ;
    sh:description "Output only. Source of the campaign asset link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. Provides the PrimaryStatus of this asset link. Primary status is meant essentially to differentiate between the plain \"status\" field, which has advertiser set values of enabled, paused, or removed. The primary status takes into account other signals (for assets its mainly policy and quality approvals) to come up with a more comprehensive status to indicate its serving state." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "LIMITED" "NOT_ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/primaryStatusDetails> ;
    sh:name "primary status details" ;
    sh:description "Output only. Provides the details of the primary status and its associated reasons." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetLinkPrimaryStatusDetailsShape ;
    sh:class googleads:AssetLinkPrimaryStatusDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAsset/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. Provides a list of reasons for why an asset is not serving or not serving at full capacity." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ASSET_LINK_PAUSED" "ASSET_LINK_REMOVED" "ASSET_DISAPPROVED" "ASSET_UNDER_REVIEW" "ASSET_APPROVED_LABELED" ) ;
  ] .

# Shape for Campaign Asset Set
googleads:CampaignAssetSetShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAssetSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAssetSet/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign to which this asset set is linked." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAssetSet/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign asset set. Asset set asset resource names have the form: `customers/{customer_id}/campaignAssetSets/{campaign_id}~{asset_set_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAssetSet/assetSet> ;
    sh:name "asset set" ;
    sh:description "Immutable. The asset set which is linked to the campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAssetSet/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the campaign asset set asset. Read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] .

# Shape for Campaign Audience View
googleads:CampaignAudienceViewShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignAudienceView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignAudienceView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the campaign audience view. Campaign audience view resource names have the form: `customers/{customer_id}/campaignAudienceViews/{campaign_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Bid Modifier
googleads:CampaignBidModifierShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignBidModifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBidModifier/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign bid modifier. Campaign bid modifier resource names have the form: `customers/{customer_id}/campaignBidModifiers/{campaign_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBidModifier/criterionId> ;
    sh:name "criterion id" ;
    sh:description "Output only. The ID of the criterion to bid modify. This field is ignored for mutates." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBidModifier/bidModifier> ;
    sh:name "bid modifier" ;
    sh:description "The modifier for the bid when the criterion matches." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBidModifier/interactionType> ;
    sh:name "interaction type" ;
    sh:description "Immutable. Criterion for interaction type. Only supported for search campaigns." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:InteractionTypeInfoShape ;
    sh:class googleads:InteractionTypeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBidModifier/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The campaign to which this criterion belongs." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Interaction Type Info
googleads:InteractionTypeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:InteractionTypeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InteractionTypeInfo/type> ;
    sh:name "type" ;
    sh:description "The interaction type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CALLS" ) ;
  ] .

# Shape for Campaign Budget
googleads:CampaignBudgetShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignBudget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign budget. Campaign budget resource names have the form: `customers/{customer_id}/campaignBudgets/{campaign_budget_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/explicitlyShared> ;
    sh:name "explicitly shared" ;
    sh:description "Specifies whether the budget is explicitly shared. Defaults to true if unspecified in a create operation. If true, the budget was created with the purpose of sharing across one or more campaigns. If false, the budget was created with the intention of only being used with a single campaign. The budget's name and status will stay in sync with the campaign's name and status. Attempting to share the budget with a second campaign will result in an error. A non-shared budget can become an explicitly shared. The same operation must also assign the budget a name. A shared campaign budget can never become non-shared." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/recommendedBudgetEstimatedChangeWeeklyClicks> ;
    sh:name "recommended budget estimated change weekly clicks" ;
    sh:description "Output only. The estimated change in weekly clicks if the recommended budget is applied. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/deliveryMethod> ;
    sh:name "delivery method" ;
    sh:description "The delivery method that determines the rate at which the campaign budget is spent. Defaults to STANDARD if unspecified in a create operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "STANDARD" "ACCELERATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/totalAmountMicros> ;
    sh:name "total amount micros" ;
    sh:description "The total amount to be spent by the campaign over its entire duration. This field is used *only* when the CampaignBudget `period` is set to `CUSTOM_PERIOD`. It represents the budget cap for the campaign's lifetime, rather than a daily limit. The amount is specified in micros in the account's local currency. One million micros is equivalent to one currency unit. This field is mutually exclusive with 'amount_micros'. Only one of 'total_amount_micros' or 'amount_micros' should be set." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/alignedBiddingStrategyId> ;
    sh:name "aligned bidding strategy id" ;
    sh:description "ID of the portfolio bidding strategy that this shared campaign budget is aligned with. When a bidding strategy and a campaign budget are aligned, they are attached to the same set of campaigns. After a campaign budget is aligned with a bidding strategy, campaigns that are added to the campaign budget must also use the aligned bidding strategy." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/hasRecommendedBudget> ;
    sh:name "has recommended budget" ;
    sh:description "Output only. Indicates whether there is a recommended budget for this campaign budget. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/recommendedBudgetEstimatedChangeWeeklyCostMicros> ;
    sh:name "recommended budget estimated change weekly cost micros" ;
    sh:description "Output only. The estimated change in weekly cost in micros if the recommended budget is applied. One million is equivalent to one currency unit. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/amountMicros> ;
    sh:name "amount micros" ;
    sh:description "The average daily amount to be spent by the campaign. This field is used when the CampaignBudget `period` is set to `DAILY`, which is the default. Amount is specified in micros in the account's local currency. One million micros is equivalent to one currency unit. The effective monthly spend is capped at 30.4 times this daily amount. This field is mutually exclusive with 'total_amount_micros'. Only one of 'amount_micros' or 'total_amount_micros' should be set." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/referenceCount> ;
    sh:name "reference count" ;
    sh:description "Output only. The number of campaigns actively using the budget. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/period> ;
    sh:name "period" ;
    sh:description "Immutable. Period over which to spend the budget. Defaults to DAILY if not specified." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DAILY" "CUSTOM_PERIOD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/recommendedBudgetEstimatedChangeWeeklyViews> ;
    sh:name "recommended budget estimated change weekly views" ;
    sh:description "Output only. The estimated change in weekly views if the recommended budget is applied. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/type> ;
    sh:name "type" ;
    sh:description "Immutable. The type of the campaign budget." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "STANDARD" "FIXED_CPA" "SMART_CAMPAIGN" "LOCAL_SERVICES" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the campaign budget. A campaign budget is created using the CampaignBudgetService create operation and is assigned a budget ID. A budget ID can be shared across different campaigns; the system will then allocate the campaign budget among different campaigns to get optimum results." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of this campaign budget. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/recommendedBudgetEstimatedChangeWeeklyInteractions> ;
    sh:name "recommended budget estimated change weekly interactions" ;
    sh:description "Output only. The estimated change in weekly interactions if the recommended budget is applied. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/name> ;
    sh:name "name" ;
    sh:description "The name of the campaign budget. When creating a campaign budget through CampaignBudgetService, every explicitly shared campaign budget must have a non-null, non-empty name. Campaign budgets that are not explicitly shared derive their name from the attached campaign's name. The length of this string must be between 1 and 255, inclusive, in UTF-8 bytes, (trimmed)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignBudget/recommendedBudgetAmountMicros> ;
    sh:name "recommended budget amount micros" ;
    sh:description "Output only. The recommended budget amount. If no recommendation is available, this will be set to the budget amount. Amount is specified in micros, where one million is equivalent to one currency unit. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Conversion Goal
googleads:CampaignConversionGoalShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignConversionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignConversionGoal/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign with which this campaign conversion goal is associated." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignConversionGoal/biddable> ;
    sh:name "biddable" ;
    sh:description "The biddability of the campaign conversion goal. If left unspecified during campaign creation or update operations, this value will inherit the account-level default biddability for the corresponding conversion category and origin. Note: The account-level default may be set to `true` for newly created conversion goals. To explicitly prevent a campaign from bidding on this goal, you must explicitly set `biddable` to `false` and include \"biddable\" in your mutate operation's `update_mask`." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignConversionGoal/category> ;
    sh:name "category" ;
    sh:description "The conversion category of this campaign conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT" "PAGE_VIEW" "PURCHASE" "SIGNUP" "DOWNLOAD" "ADD_TO_CART" "BEGIN_CHECKOUT" "SUBSCRIBE_PAID" "PHONE_CALL_LEAD" "IMPORTED_LEAD" "SUBMIT_LEAD_FORM" "BOOK_APPOINTMENT" "REQUEST_QUOTE" "GET_DIRECTIONS" "OUTBOUND_CLICK" "CONTACT" "ENGAGEMENT" "STORE_VISIT" "STORE_SALE" "QUALIFIED_LEAD" "CONVERTED_LEAD" "YOUTUBE_FOLLOW_ON_VIEWS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignConversionGoal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign conversion goal. Campaign conversion goal resource names have the form: `customers/{customer_id}/campaignConversionGoals/{campaign_id}~{category}~{origin}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignConversionGoal/origin> ;
    sh:name "origin" ;
    sh:description "The conversion origin of this campaign conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "GOOGLE_HOSTED" "APP" "CALL_FROM_ADS" "STORE" "YOUTUBE_HOSTED" "LOCAL_SERVICES_ADS" ) ;
  ] .

# Shape for Campaign Criterion
googleads:CampaignCriterionShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/mobileAppCategory> ;
    sh:name "mobile app category" ;
    sh:description "Immutable. Mobile app category." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileAppCategoryInfoShape ;
    sh:class googleads:MobileAppCategoryInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/youtubeChannel> ;
    sh:name "youtube channel" ;
    sh:description "Immutable. YouTube Channel." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeChannelInfoShape ;
    sh:class googleads:YouTubeChannelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/topic> ;
    sh:name "topic" ;
    sh:description "Immutable. Topic." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:TopicInfoShape ;
    sh:class googleads:TopicInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/operatingSystemVersion> ;
    sh:name "operating system version" ;
    sh:description "Immutable. Operating system version." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:OperatingSystemVersionInfoShape ;
    sh:class googleads:OperatingSystemVersionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign criterion. Campaign criterion resource names have the form: `customers/{customer_id}/campaignCriteria/{campaign_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/criterionId> ;
    sh:name "criterion id" ;
    sh:description "Output only. The ID of the criterion. This field is ignored during mutate." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. The display name of the criterion. This field is ignored for mutates." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/webpage> ;
    sh:name "webpage" ;
    sh:description "Immutable. Webpage." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:WebpageInfoShape ;
    sh:class googleads:WebpageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/brandList> ;
    sh:name "brand list" ;
    sh:description "Immutable. Brand list campaign criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:BrandListInfoShape ;
    sh:class googleads:BrandListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/language> ;
    sh:name "language" ;
    sh:description "Immutable. Language." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LanguageInfoShape ;
    sh:class googleads:LanguageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign to which the criterion belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/incomeRange> ;
    sh:name "income range" ;
    sh:description "Immutable. Income range." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:IncomeRangeInfoShape ;
    sh:class googleads:IncomeRangeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/locationGroup> ;
    sh:name "location group" ;
    sh:description "Immutable. Location Group" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LocationGroupInfoShape ;
    sh:class googleads:LocationGroupInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/ageRange> ;
    sh:name "age range" ;
    sh:description "Immutable. Age range." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AgeRangeInfoShape ;
    sh:class googleads:AgeRangeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/gender> ;
    sh:name "gender" ;
    sh:description "Immutable. Gender." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:GenderInfoShape ;
    sh:class googleads:GenderInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/bidModifier> ;
    sh:name "bid modifier" ;
    sh:description "The modifier for the bids when the criterion matches. The modifier must be in the range: 0.1 - 10.0. Most targetable criteria types support modifiers. Use 0 to opt out of a Device type." ;
    sh:datatype xsd:float ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/contentLabel> ;
    sh:name "content label" ;
    sh:description "Immutable. ContentLabel." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ContentLabelInfoShape ;
    sh:class googleads:ContentLabelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/listingScope> ;
    sh:name "listing scope" ;
    sh:description "Immutable. Listing scope." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ListingScopeInfoShape ;
    sh:class googleads:ListingScopeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/combinedAudience> ;
    sh:name "combined audience" ;
    sh:description "Immutable. Combined Audience." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CombinedAudienceInfoShape ;
    sh:class googleads:CombinedAudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/keyword> ;
    sh:name "keyword" ;
    sh:description "Immutable. Keyword." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/extendedDemographic> ;
    sh:name "extended demographic" ;
    sh:description "Immutable. Extended demographic criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ExtendedDemographicInfoShape ;
    sh:class googleads:ExtendedDemographicInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/youtubeVideo> ;
    sh:name "youtube video" ;
    sh:description "Immutable. YouTube Video." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeVideoInfoShape ;
    sh:class googleads:YouTubeVideoInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/negative> ;
    sh:name "negative" ;
    sh:description "Immutable. Whether to target (`false`) or exclude (`true`) the criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/keywordTheme> ;
    sh:name "keyword theme" ;
    sh:description "Immutable. Smart Campaign Keyword Theme." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:KeywordThemeInfoShape ;
    sh:class googleads:KeywordThemeInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/carrier> ;
    sh:name "carrier" ;
    sh:description "Immutable. Carrier." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CarrierInfoShape ;
    sh:class googleads:CarrierInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/mobileApplication> ;
    sh:name "mobile application" ;
    sh:description "Immutable. Mobile application." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileApplicationInfoShape ;
    sh:class googleads:MobileApplicationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/webpageList> ;
    sh:name "webpage list" ;
    sh:description "Immutable. Webpage list. This criterion is not publicly available." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:WebpageListInfoShape ;
    sh:class googleads:WebpageListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/device> ;
    sh:name "device" ;
    sh:description "Immutable. Device." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:DeviceInfoShape ;
    sh:class googleads:DeviceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/userInterest> ;
    sh:name "user interest" ;
    sh:description "Immutable. User Interest." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:UserInterestInfoShape ;
    sh:class googleads:UserInterestInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/parentalStatus> ;
    sh:name "parental status" ;
    sh:description "Immutable. Parental status." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ParentalStatusInfoShape ;
    sh:class googleads:ParentalStatusInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/localServiceId> ;
    sh:name "local service id" ;
    sh:description "Immutable. GLS service campaign criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LocalServiceIdInfoShape ;
    sh:class googleads:LocalServiceIdInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/ipBlock> ;
    sh:name "ip block" ;
    sh:description "Immutable. IpBlock. You can exclude up to 500 IP addresses per campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:IpBlockInfoShape ;
    sh:class googleads:IpBlockInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/proximity> ;
    sh:name "proximity" ;
    sh:description "Immutable. Proximity." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ProximityInfoShape ;
    sh:class googleads:ProximityInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/location> ;
    sh:name "location" ;
    sh:description "Immutable. Location." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LocationInfoShape ;
    sh:class googleads:LocationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/lifeEvent> ;
    sh:name "life event" ;
    sh:description "Immutable. Life event campaign criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LifeEventInfoShape ;
    sh:class googleads:LifeEventInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/mobileDevice> ;
    sh:name "mobile device" ;
    sh:description "Immutable. Mobile Device." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileDeviceInfoShape ;
    sh:class googleads:MobileDeviceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/placement> ;
    sh:name "placement" ;
    sh:description "Immutable. Placement." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:PlacementInfoShape ;
    sh:class googleads:PlacementInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/status> ;
    sh:name "status" ;
    sh:description "The status of the criterion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "PAUSED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/customAudience> ;
    sh:name "custom audience" ;
    sh:description "Immutable. Custom Audience" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CustomAudienceInfoShape ;
    sh:class googleads:CustomAudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "PLACEMENT" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "DEVICE" "LOCATION" "LISTING_GROUP" "AD_SCHEDULE" "AGE_RANGE" "GENDER" "INCOME_RANGE" "PARENTAL_STATUS" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "USER_LIST" "PROXIMITY" "TOPIC" "LISTING_SCOPE" "LANGUAGE" "IP_BLOCK" "CONTENT_LABEL" "CARRIER" "USER_INTEREST" "WEBPAGE" "OPERATING_SYSTEM_VERSION" "APP_PAYMENT_MODEL" "MOBILE_DEVICE" "CUSTOM_AFFINITY" "CUSTOM_INTENT" "LOCATION_GROUP" "CUSTOM_AUDIENCE" "COMBINED_AUDIENCE" "KEYWORD_THEME" "AUDIENCE" "NEGATIVE_KEYWORD_LIST" "LOCAL_SERVICE_ID" "SEARCH_THEME" "BRAND" "BRAND_LIST" "LIFE_EVENT" "WEBPAGE_LIST" "VIDEO_LINEUP" "PLACEMENT_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE" "RETAIL_FILTER_BUNDLE" "RETAIL_FILTER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/videoLineup> ;
    sh:name "video lineup" ;
    sh:description "Immutable. Video lineup criterion." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:VideoLineupInfoShape ;
    sh:class googleads:VideoLineupInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/adSchedule> ;
    sh:name "ad schedule" ;
    sh:description "Immutable. Ad Schedule." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:AdScheduleInfoShape ;
    sh:class googleads:AdScheduleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/customAffinity> ;
    sh:name "custom affinity" ;
    sh:description "Immutable. Custom Affinity." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CustomAffinityInfoShape ;
    sh:class googleads:CustomAffinityInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCriterion/userList> ;
    sh:name "user list" ;
    sh:description "Immutable. User List." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:UserListInfoShape ;
    sh:class googleads:UserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Operating System Version Info
googleads:OperatingSystemVersionInfoShape a sh:NodeShape ;
  sh:targetClass googleads:OperatingSystemVersionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OperatingSystemVersionInfo/operatingSystemVersionConstant> ;
    sh:name "operating system version constant" ;
    sh:description "The operating system version constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Location Group Info
googleads:LocationGroupInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LocationGroupInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationGroupInfo/geoTargetConstants> ;
    sh:name "geo target constants" ;
    sh:description "Geo target constant(s) restricting the scope of the geographic area within the feed. Currently only one geo target constant is allowed. Cannot be set with AssetSet fields." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationGroupInfo/locationGroupAssetSets> ;
    sh:name "location group asset sets" ;
    sh:description "AssetSets whose Assets are targeted. If multiple IDs are specified, then all items that appear in at least one set are targeted. This field cannot be used with feed, geo target constants or feed item sets. When using asset sets, either this field or enable_customer_level_location_asset_set should be specified. Both cannot be used at the same time. This can only be set in CREATE operations." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationGroupInfo/feedItemSets> ;
    sh:name "feed item sets" ;
    sh:description "FeedItemSets whose FeedItems are targeted. If multiple IDs are specified, then all items that appear in at least one set are targeted. This field cannot be used with geo_target_constants. This is optional and can only be set in CREATE operations. Cannot be set with AssetSet fields." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationGroupInfo/radius> ;
    sh:name "radius" ;
    sh:description "Distance in units specifying the radius around targeted locations. This is required and must be set in CREATE operations." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationGroupInfo/enableCustomerLevelLocationAssetSet> ;
    sh:name "enable customer level location asset set" ;
    sh:description "Denotes that the latest customer level asset set is used for targeting. Used with radius and radius_units. Cannot be used with feed, geo target constants or feed item sets. When using asset sets, either this field or location_group_asset_sets should be specified. Both cannot be used at the same time. This can only be set in CREATE operations." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationGroupInfo/radiusUnits> ;
    sh:name "radius units" ;
    sh:description "Unit of the radius. Miles and meters are supported for geo target constants. Milli miles and meters are supported for feed item sets and asset sets. This is required and must be set in CREATE operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "METERS" "MILES" "MILLI_MILES" ) ;
  ] .

# Shape for Content Label Info
googleads:ContentLabelInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ContentLabelInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ContentLabelInfo/type> ;
    sh:name "type" ;
    sh:description "Content label type, required for CREATE operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEXUALLY_SUGGESTIVE" "BELOW_THE_FOLD" "PARKED_DOMAIN" "JUVENILE" "PROFANITY" "TRAGEDY" "VIDEO" "VIDEO_RATING_DV_G" "VIDEO_RATING_DV_PG" "VIDEO_RATING_DV_T" "VIDEO_RATING_DV_MA" "VIDEO_NOT_YET_RATED" "EMBEDDED_VIDEO" "LIVE_STREAMING_VIDEO" "SOCIAL_ISSUES" "BRAND_SUITABILITY_CONTENT_FOR_FAMILIES" "BRAND_SUITABILITY_GAMES_FIGHTING" "BRAND_SUITABILITY_GAMES_MATURE" "BRAND_SUITABILITY_HEALTH_SENSITIVE" "BRAND_SUITABILITY_HEALTH_SOURCE_UNDETERMINED" "BRAND_SUITABILITY_NEWS_RECENT" "BRAND_SUITABILITY_NEWS_SENSITIVE" "BRAND_SUITABILITY_NEWS_SOURCE_NOT_FEATURED" "BRAND_SUITABILITY_POLITICS" "BRAND_SUITABILITY_RELIGION" ) ;
  ] .

# Shape for Listing Scope Info
googleads:ListingScopeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ListingScopeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ListingScopeInfo/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Scope of the campaign criterion." ;
    sh:node googleads:ListingDimensionInfoShape ;
    sh:class googleads:ListingDimensionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Keyword Theme Info
googleads:KeywordThemeInfoShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordThemeInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordThemeInfo/freeFormKeywordTheme> ;
    sh:name "free form keyword theme" ;
    sh:description "Free-form text to be matched to a Smart Campaign keyword theme constant on a best-effort basis." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordThemeInfo/keywordThemeConstant> ;
    sh:name "keyword theme constant" ;
    sh:description "The resource name of a Smart Campaign keyword theme constant. `keywordThemeConstants/{keyword_theme_id}~{sub_keyword_theme_id}`" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Carrier Info
googleads:CarrierInfoShape a sh:NodeShape ;
  sh:targetClass googleads:CarrierInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CarrierInfo/carrierConstant> ;
    sh:name "carrier constant" ;
    sh:description "The Carrier constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Webpage List Info
googleads:WebpageListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:WebpageListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageListInfo/sharedSet> ;
    sh:name "shared set" ;
    sh:description "Shared set resource name of the webpage list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ip Block Info
googleads:IpBlockInfoShape a sh:NodeShape ;
  sh:targetClass googleads:IpBlockInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.IpBlockInfo/ipAddress> ;
    sh:name "ip address" ;
    sh:description "The IP address or the CIDR block to be excluded." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Proximity Info
googleads:ProximityInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ProximityInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProximityInfo/radius> ;
    sh:name "radius" ;
    sh:description "The radius of the proximity." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProximityInfo/address> ;
    sh:name "address" ;
    sh:description "Full address." ;
    sh:node googleads:AddressInfoShape ;
    sh:class googleads:AddressInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProximityInfo/geoPoint> ;
    sh:name "geo point" ;
    sh:description "Latitude and longitude." ;
    sh:node googleads:GeoPointInfoShape ;
    sh:class googleads:GeoPointInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProximityInfo/radiusUnits> ;
    sh:name "radius units" ;
    sh:description "The unit of measurement of the radius. Default is KILOMETERS." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MILES" "KILOMETERS" ) ;
  ] .

# Shape for Geo Point Info
googleads:GeoPointInfoShape a sh:NodeShape ;
  sh:targetClass googleads:GeoPointInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoPointInfo/longitudeInMicroDegrees> ;
    sh:name "longitude in micro degrees" ;
    sh:description "Micro degrees for the longitude." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoPointInfo/latitudeInMicroDegrees> ;
    sh:name "latitude in micro degrees" ;
    sh:description "Micro degrees for the latitude." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Mobile Device Info
googleads:MobileDeviceInfoShape a sh:NodeShape ;
  sh:targetClass googleads:MobileDeviceInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileDeviceInfo/mobileDeviceConstant> ;
    sh:name "mobile device constant" ;
    sh:description "The mobile device constant resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Customizer
googleads:CampaignCustomizerShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignCustomizer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCustomizer/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign to which the customizer attribute is linked." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCustomizer/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the campaign customizer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCustomizer/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign customizer. Campaign customizer resource names have the form: `customers/{customer_id}/campaignCustomizers/{campaign_id}~{customizer_attribute_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCustomizer/value> ;
    sh:name "value" ;
    sh:description "Required. The value to associate with the customizer attribute at this level. The value must be of the type specified for the CustomizerAttribute." ;
    sh:node googleads:CustomizerValueShape ;
    sh:class googleads:CustomizerValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignCustomizer/customizerAttribute> ;
    sh:name "customizer attribute" ;
    sh:description "Required. Immutable. The customizer attribute which is linked to the campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Draft
googleads:CampaignDraftShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignDraft ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/baseCampaign> ;
    sh:name "base campaign" ;
    sh:description "Immutable. The base campaign to which the draft belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign draft. Campaign draft resource names have the form: `customers/{customer_id}/campaignDrafts/{base_campaign_id}~{draft_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/hasExperimentRunning> ;
    sh:name "has experiment running" ;
    sh:description "Output only. Whether there is an experiment based on this draft currently serving." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/name> ;
    sh:name "name" ;
    sh:description "The name of the campaign draft. This field is required and should not be empty when creating new campaign drafts. It must not contain any null (code point 0x0), NL line feed (code point 0xA) or carriage return (code point 0xD) characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the campaign draft. This field is read-only. When a new campaign draft is added, the status defaults to PROPOSED." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PROPOSED" "REMOVED" "PROMOTING" "PROMOTED" "PROMOTE_FAILED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/draftId> ;
    sh:name "draft id" ;
    sh:description "Output only. The ID of the draft. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/draftCampaign> ;
    sh:name "draft campaign" ;
    sh:description "Output only. Resource name of the Campaign that results from overlaying the draft changes onto the base campaign. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignDraft/longRunningOperation> ;
    sh:name "long running operation" ;
    sh:description "Output only. The resource name of the long-running operation that can be used to poll for completion of draft promotion. This is only set if the draft promotion is in progress or finished." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Goal Config
googleads:CampaignGoalConfigShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignGoalConfig ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGoalConfig/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign goal config. campaign goal config resource names have the form: `customers/{customer_id}/campaignGoalConfigs/{campaign_id}~{goal_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGoalConfig/goal> ;
    sh:name "goal" ;
    sh:description "Immutable. The resource name of the goal this link is attached to." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGoalConfig/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The resource name of the campaign for this link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGoalConfig/goalType> ;
    sh:name "goal type" ;
    sh:description "Output only. The goal type this link is attached to." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER_RETENTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGoalConfig/campaignRetentionSettings> ;
    sh:name "campaign retention settings" ;
    sh:description "Retention goal campaign settings." ;
    sh:node googleads:CampaignGoalSettingsCampaignRetentionGoalSettingsShape ;
    sh:class googleads:CampaignGoalSettingsCampaignRetentionGoalSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Goal Settings Campaign Retention Goal Settings
googleads:CampaignGoalSettingsCampaignRetentionGoalSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignGoalSettingsCampaignRetentionGoalSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGoalSettingsCampaignRetentionGoalSettings/valueSettingsOverride> ;
    sh:name "value settings override" ;
    sh:description "Retention goal campaign specific value settings." ;
    sh:node googleads:CustomerLifecycleOptimizationValueSettingsShape ;
    sh:class googleads:CustomerLifecycleOptimizationValueSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGoalSettingsCampaignRetentionGoalSettings/targetOption> ;
    sh:name "target option" ;
    sh:description "Retention goal optimization mode for this campaign. Defaults to TARGET_ALL. Only customers on the allowlist can set target_option." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TARGET_ALL" "TARGET_SPECIFIC" ) ;
  ] .

# Shape for Customer Lifecycle Optimization Value Settings
googleads:CustomerLifecycleOptimizationValueSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerLifecycleOptimizationValueSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLifecycleOptimizationValueSettings/additionalValue> ;
    sh:name "additional value" ;
    sh:description "Value of the lifecycle goal. For example, for retention goals, value is the incremental conversion value for lapsed customers who are not of high value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLifecycleOptimizationValueSettings/additionalHighLifetimeValue> ;
    sh:name "additional high lifetime value" ;
    sh:description "High lifetime value of the lifecycle goal. For example, for customer acquisition goals, high lifetime value is the incremental conversion value for lapsed customers who are of high value. High lifetime value should be greater than value, if set." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Group
googleads:CampaignGroupShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGroup/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign group. Campaign group resource names have the form: `customers/{customer_id}/campaignGroups/{campaign_group_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGroup/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the campaign group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGroup/name> ;
    sh:name "name" ;
    sh:description "The name of the campaign group. This field is required and should not be empty when creating new campaign groups. It must not contain any null (code point 0x0), NL line feed (code point 0xA) or carriage return (code point 0xD) characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignGroup/status> ;
    sh:name "status" ;
    sh:description "The status of the campaign group. When a new campaign group is added, the status defaults to ENABLED." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] .

# Shape for Campaign Label
googleads:CampaignLabelShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignLabel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLabel/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Name of the resource. Campaign label resource names have the form: `customers/{customer_id}/campaignLabels/{campaign_id}~{label_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLabel/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign to which the label is attached." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLabel/label> ;
    sh:name "label" ;
    sh:description "Immutable. The label assigned to the campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Lifecycle Goal
googleads:CampaignLifecycleGoalShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignLifecycleGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLifecycleGoal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer lifecycle goal of a campaign. `customers/{customer_id}/campaignLifecycleGoals/{campaign_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLifecycleGoal/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The campaign where the goal is attached." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignLifecycleGoal/customerAcquisitionGoalSettings> ;
    sh:name "customer acquisition goal settings" ;
    sh:description "Output only. The customer acquisition goal settings for the campaign. The customer acquisition goal is described in this article: https://support.google.com/google-ads/answer/12080169" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomerAcquisitionGoalSettingsShape ;
    sh:class googleads:CustomerAcquisitionGoalSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Acquisition Goal Settings
googleads:CustomerAcquisitionGoalSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerAcquisitionGoalSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAcquisitionGoalSettings/optimizationMode> ;
    sh:name "optimization mode" ;
    sh:description "Output only. Customer acquisition optimization mode of this campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TARGET_ALL_EQUALLY" "BID_HIGHER_FOR_NEW_CUSTOMER" "TARGET_NEW_CUSTOMER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAcquisitionGoalSettings/valueSettings> ;
    sh:name "value settings" ;
    sh:description "Output only. Campaign specific values for the customer acquisition goal." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LifecycleGoalValueSettingsShape ;
    sh:class googleads:LifecycleGoalValueSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Lifecycle Goal Value Settings
googleads:LifecycleGoalValueSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:LifecycleGoalValueSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifecycleGoalValueSettings/value> ;
    sh:name "value" ;
    sh:description "Value of the lifecycle goal. For example, for customer acquisition goal, value is the incremental conversion value for new customers who are not of high value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifecycleGoalValueSettings/highLifetimeValue> ;
    sh:name "high lifetime value" ;
    sh:description "High lifetime value of the lifecycle goal. For example, for customer acquisition goal, high lifetime value is the incremental conversion value for new customers who are of high value. High lifetime value should be greater than value, if set." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Search Term Insight
googleads:CampaignSearchTermInsightShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignSearchTermInsight ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSearchTermInsight/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the campaign level search term insight. Campaign level search term insight resource names have the form: `customers/{customer_id}/campaignSearchTermInsights/{campaign_id}~{category_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSearchTermInsight/categoryLabel> ;
    sh:name "category label" ;
    sh:description "Output only. The label for the search category. An empty string denotes the catch-all category for search terms that didn't fit into another category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSearchTermInsight/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the insight." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSearchTermInsight/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Output only. The ID of the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Search Term View
googleads:CampaignSearchTermViewShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignSearchTermView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSearchTermView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the campaign search term view. Campaign search term view resource names have the form: `customers/{customer_id}/campaignSearchTermViews/{campaign_id}~{URL-base64_search_term}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSearchTermView/searchTerm> ;
    sh:name "search term" ;
    sh:description "Output only. The search term." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSearchTermView/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The campaign the search term served in." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Shared Set
googleads:CampaignSharedSetShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignSharedSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSharedSet/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the campaign shared set. Campaign shared set resource names have the form: `customers/{customer_id}/campaignSharedSets/{campaign_id}~{shared_set_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSharedSet/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of this campaign shared set. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSharedSet/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign to which the campaign shared set belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSharedSet/sharedSet> ;
    sh:name "shared set" ;
    sh:description "Immutable. The shared set associated with the campaign. This may be a negative keyword shared set of another customer. This customer should be a manager of the other customer, otherwise the campaign shared set will exist but have no serving effect. Only negative keyword shared sets can be associated with Shopping campaigns. Only negative placement shared sets can be associated with Display mobile app campaigns." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Simulation
googleads:CampaignSimulationShape a sh:NodeShape ;
  sh:targetClass googleads:CampaignSimulation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/endDate> ;
    sh:name "end date" ;
    sh:description "Output only. Last day on which the simulation is based, in YYYY-MM-DD format" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/targetCpaPointList> ;
    sh:name "target cpa point list" ;
    sh:description "Output only. Simulation points if the simulation type is TARGET_CPA." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TargetCpaSimulationPointListShape ;
    sh:class googleads:TargetCpaSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/cpcBidPointList> ;
    sh:name "cpc bid point list" ;
    sh:description "Output only. Simulation points if the simulation type is CPC_BID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CpcBidSimulationPointListShape ;
    sh:class googleads:CpcBidSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/targetRoasPointList> ;
    sh:name "target roas point list" ;
    sh:description "Output only. Simulation points if the simulation type is TARGET_ROAS." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TargetRoasSimulationPointListShape ;
    sh:class googleads:TargetRoasSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/targetImpressionSharePointList> ;
    sh:name "target impression share point list" ;
    sh:description "Output only. Simulation points if the simulation type is TARGET_IMPRESSION_SHARE." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TargetImpressionShareSimulationPointListShape ;
    sh:class googleads:TargetImpressionShareSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/startDate> ;
    sh:name "start date" ;
    sh:description "Output only. First day on which the simulation is based, in YYYY-MM-DD format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Output only. Campaign id of the simulation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/type> ;
    sh:name "type" ;
    sh:description "Output only. The field that the simulation modifies." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CPC_BID" "CPV_BID" "TARGET_CPA" "BID_MODIFIER" "TARGET_ROAS" "PERCENT_CPC_BID" "TARGET_IMPRESSION_SHARE" "BUDGET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the campaign simulation. Campaign simulation resource names have the form: `customers/{customer_id}/campaignSimulations/{campaign_id}~{type}~{modification_method}~{start_date}~{end_date}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/budgetPointList> ;
    sh:name "budget point list" ;
    sh:description "Output only. Simulation points if the simulation type is BUDGET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:BudgetSimulationPointListShape ;
    sh:class googleads:BudgetSimulationPointList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CampaignSimulation/modificationMethod> ;
    sh:name "modification method" ;
    sh:description "Output only. How the simulation modifies the field." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNIFORM" "DEFAULT" "SCALING" ) ;
  ] .

# Shape for Target Impression Share Simulation Point List
googleads:TargetImpressionShareSimulationPointListShape a sh:NodeShape ;
  sh:targetClass googleads:TargetImpressionShareSimulationPointList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPointList/points> ;
    sh:name "points" ;
    sh:description "Projected metrics for a specific target impression share value." ;
    sh:node googleads:TargetImpressionShareSimulationPointShape ;
    sh:class googleads:TargetImpressionShareSimulationPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Target Impression Share Simulation Point
googleads:TargetImpressionShareSimulationPointShape a sh:NodeShape ;
  sh:targetClass googleads:TargetImpressionShareSimulationPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/biddableConversionsValue> ;
    sh:name "biddable conversions value" ;
    sh:description "Projected total value of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Projected cost in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/impressions> ;
    sh:name "impressions" ;
    sh:description "Projected number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/clicks> ;
    sh:name "clicks" ;
    sh:description "Projected number of clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/absoluteTopImpressions> ;
    sh:name "absolute top impressions" ;
    sh:description "Projected number of absolute top impressions. Only search advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/targetImpressionShareMicros> ;
    sh:name "target impression share micros" ;
    sh:description "The simulated target impression share value (in micros) upon which projected metrics are based. For example, 10% impression share, which is equal to 0.1, is stored as 100_000. This value is validated and will not exceed 1M (100%)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/requiredCpcBidCeilingMicros> ;
    sh:name "required cpc bid ceiling micros" ;
    sh:description "Projected required daily cpc bid ceiling that the advertiser must set to realize this simulation, in micros of the advertiser currency." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/requiredBudgetAmountMicros> ;
    sh:name "required budget amount micros" ;
    sh:description "Projected required daily budget that the advertiser must set in order to receive the estimated traffic, in micros of advertiser currency." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/biddableConversions> ;
    sh:name "biddable conversions" ;
    sh:description "Projected number of biddable conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetImpressionShareSimulationPoint/topSlotImpressions> ;
    sh:name "top slot impressions" ;
    sh:description "Projected number of top slot impressions. Only search advertising channel type supports this field." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Carrier Constant
googleads:CarrierConstantShape a sh:NodeShape ;
  sh:targetClass googleads:CarrierConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CarrierConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the carrier criterion. Carrier criterion resource names have the form: `carrierConstants/{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CarrierConstant/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the carrier criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CarrierConstant/name> ;
    sh:name "name" ;
    sh:description "Output only. The full name of the carrier in English." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CarrierConstant/countryCode> ;
    sh:name "country code" ;
    sh:description "Output only. The country code of the country where the carrier is located, for example, \"AR\", \"FR\", etc." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Cart Data Sales View
googleads:CartDataSalesViewShape a sh:NodeShape ;
  sh:targetClass googleads:CartDataSalesView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CartDataSalesView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Cart data sales view. Cart data sales view resource names have the form: `customers/{customer_id}/cartDataSalesView`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Change Event
googleads:ChangeEventShape a sh:NodeShape ;
  sh:targetClass googleads:ChangeEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/newResource> ;
    sh:name "new resource" ;
    sh:description "Output only. The new resource after the change. Only changed fields will be populated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:ChangeEventChangedResource ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The Campaign affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/changeDateTime> ;
    sh:name "change date time" ;
    sh:description "Output only. Time at which the change was committed on this resource." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/resourceChangeOperation> ;
    sh:name "resource change operation" ;
    sh:description "Output only. The operation on the changed resource." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CREATE" "UPDATE" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/changeResourceName> ;
    sh:name "change resource name" ;
    sh:description "Output only. The Simply resource this change occurred on." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/asset> ;
    sh:name "asset" ;
    sh:description "Output only. The Asset affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/oldResource> ;
    sh:name "old resource" ;
    sh:description "Output only. The old resource before the change. Only changed fields will be populated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:ChangeEventChangedResource ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/userEmail> ;
    sh:name "user email" ;
    sh:description "Output only. The email of the user who made this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the change event. Change event resource names have the form: `customers/{customer_id}/changeEvents/{timestamp_micros}~{command_index}~{mutate_index}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/clientType> ;
    sh:name "client type" ;
    sh:description "Output only. Where the change was made through." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GOOGLE_ADS_WEB_CLIENT" "GOOGLE_ADS_AUTOMATED_RULE" "GOOGLE_ADS_SCRIPTS" "GOOGLE_ADS_BULK_UPLOAD" "GOOGLE_ADS_API" "GOOGLE_ADS_EDITOR" "GOOGLE_ADS_MOBILE_APP" "GOOGLE_ADS_RECOMMENDATIONS" "SEARCH_ADS_360_SYNC" "SEARCH_ADS_360_POST" "INTERNAL_TOOL" "OTHER" "GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. The AdGroup affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/changeResourceType> ;
    sh:name "change resource type" ;
    sh:description "Output only. The type of the changed resource. This dictates what resource will be set in old_resource and new_resource." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AD" "AD_GROUP" "AD_GROUP_CRITERION" "CAMPAIGN" "CAMPAIGN_BUDGET" "AD_GROUP_BID_MODIFIER" "CAMPAIGN_CRITERION" "FEED" "FEED_ITEM" "CAMPAIGN_FEED" "AD_GROUP_FEED" "AD_GROUP_AD" "ASSET" "CUSTOMER_ASSET" "CAMPAIGN_ASSET" "AD_GROUP_ASSET" "ASSET_SET" "ASSET_SET_ASSET" "CAMPAIGN_ASSET_SET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEvent/changedFields> ;
    sh:name "changed fields" ;
    sh:description "Output only. A list of fields that are changed in the returned resource." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Change Event Changed Resource
googleads:ChangeEventChangedResourceShape a sh:NodeShape ;
  sh:targetClass googleads:ChangeEventChangedResource ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/campaignBudget> ;
    sh:name "campaign budget" ;
    sh:description "Output only. Set if change_resource_type == CAMPAIGN_BUDGET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignBudgetShape ;
    sh:class googleads:CampaignBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "Output only. Set if change_resource_type == AD_GROUP_CRITERION." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupCriterionShape ;
    sh:class googleads:AdGroupCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/campaignAsset> ;
    sh:name "campaign asset" ;
    sh:description "Output only. Set if change_resource_type == CAMPAIGN_ASSET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignAssetShape ;
    sh:class googleads:CampaignAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. Set if change_resource_type == CAMPAIGN." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignShape ;
    sh:class googleads:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/asset> ;
    sh:name "asset" ;
    sh:description "Output only. Set if change_resource_type == ASSET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:Asset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/assetSetAsset> ;
    sh:name "asset set asset" ;
    sh:description "Output only. Set if change_resource_type == ASSET_SET_ASSET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetSetAssetShape ;
    sh:class googleads:AssetSetAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/adGroupBidModifier> ;
    sh:name "ad group bid modifier" ;
    sh:description "Output only. Set if change_resource_type == AD_GROUP_BID_MODIFIER." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupBidModifierShape ;
    sh:class googleads:AdGroupBidModifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/campaignAssetSet> ;
    sh:name "campaign asset set" ;
    sh:description "Output only. Set if change_resource_type == CAMPAIGN_ASSET_SET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignAssetSetShape ;
    sh:class googleads:CampaignAssetSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. Set if change_resource_type == AD_GROUP." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupShape ;
    sh:class googleads:AdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/campaignCriterion> ;
    sh:name "campaign criterion" ;
    sh:description "Output only. Set if change_resource_type == CAMPAIGN_CRITERION." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CampaignCriterionShape ;
    sh:class googleads:CampaignCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/customerAsset> ;
    sh:name "customer asset" ;
    sh:description "Output only. Set if change_resource_type == CUSTOMER_ASSET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomerAssetShape ;
    sh:class googleads:CustomerAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/ad> ;
    sh:name "ad" ;
    sh:description "Output only. Set if change_resource_type == AD." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/adGroupAsset> ;
    sh:name "ad group asset" ;
    sh:description "Output only. Set if change_resource_type == AD_GROUP_ASSET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdGroupAssetShape ;
    sh:class googleads:AdGroupAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/adGroupAd> ;
    sh:name "ad group ad" ;
    sh:description "Output only. Set if change_resource_type == AD_GROUP_AD." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:AdGroupAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeEventChangedResource/assetSet> ;
    sh:name "asset set" ;
    sh:description "Output only. Set if change_resource_type == ASSET_SET." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetSetShape ;
    sh:class googleads:AssetSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Asset
googleads:CustomerAssetShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer asset. CustomerAsset resource names have the form: `customers/{customer_id}/customerAssets/{asset_id}~{field_type}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/fieldType> ;
    sh:name "field type" ;
    sh:description "Required. Immutable. Role that the asset takes for the customer link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/asset> ;
    sh:name "asset" ;
    sh:description "Required. Immutable. The asset which is linked to the customer." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/source> ;
    sh:name "source" ;
    sh:description "Output only. Source of the customer asset link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/status> ;
    sh:name "status" ;
    sh:description "Status of the customer asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "PAUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/primaryStatusDetails> ;
    sh:name "primary status details" ;
    sh:description "Output only. Provides the details of the primary status and its associated reasons." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AssetLinkPrimaryStatusDetailsShape ;
    sh:class googleads:AssetLinkPrimaryStatusDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/primaryStatusReasons> ;
    sh:name "primary status reasons" ;
    sh:description "Output only. Provides a list of reasons for why an asset is not serving or not serving at full capacity." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ASSET_LINK_PAUSED" "ASSET_LINK_REMOVED" "ASSET_DISAPPROVED" "ASSET_UNDER_REVIEW" "ASSET_APPROVED_LABELED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAsset/primaryStatus> ;
    sh:name "primary status" ;
    sh:description "Output only. Provides the PrimaryStatus of this asset link. Primary status is meant essentially to differentiate between the plain \"status\" field, which has advertiser set values of enabled, paused, or removed. The primary status takes into account other signals (for assets its mainly policy and quality approvals) to come up with a more comprehensive status to indicate its serving state." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "PAUSED" "REMOVED" "PENDING" "LIMITED" "NOT_ELIGIBLE" ) ;
  ] .

# Shape for Change Status
googleads:ChangeStatusShape a sh:NodeShape ;
  sh:targetClass googleads:ChangeStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. The AdGroup affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/campaignCriterion> ;
    sh:name "campaign criterion" ;
    sh:description "Output only. The CampaignCriterion affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/customerAsset> ;
    sh:name "customer asset" ;
    sh:description "Output only. The CustomerAsset affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the change status. Change status resource names have the form: `customers/{customer_id}/changeStatus/{change_status_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/campaignAssetSet> ;
    sh:name "campaign asset set" ;
    sh:description "Output only. The CampaignAssetSet affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/adGroupBidModifier> ;
    sh:name "ad group bid modifier" ;
    sh:description "Output only. The AdGroupBidModifier affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Output only. The AssetGroup affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/resourceStatus> ;
    sh:name "resource status" ;
    sh:description "Output only. Represents the status of the changed resource." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADDED" "CHANGED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/lastChangeDateTime> ;
    sh:name "last change date time" ;
    sh:description "Output only. Time at which the most recent change has occurred on this resource." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/resourceType> ;
    sh:name "resource type" ;
    sh:description "Output only. Represents the type of the changed resource. This dictates what fields will be set. For example, for AD_GROUP, campaign and ad_group fields will be set." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AD_GROUP" "AD_GROUP_AD" "AD_GROUP_CRITERION" "CAMPAIGN" "CAMPAIGN_CRITERION" "CAMPAIGN_BUDGET" "FEED" "FEED_ITEM" "AD_GROUP_FEED" "CAMPAIGN_FEED" "AD_GROUP_BID_MODIFIER" "SHARED_SET" "CAMPAIGN_SHARED_SET" "ASSET" "CUSTOMER_ASSET" "CAMPAIGN_ASSET" "AD_GROUP_ASSET" "COMBINED_AUDIENCE" "ASSET_GROUP" "ASSET_SET" "CAMPAIGN_ASSET_SET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/adGroupAd> ;
    sh:name "ad group ad" ;
    sh:description "Output only. The AdGroupAd affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/assetSet> ;
    sh:name "asset set" ;
    sh:description "Output only. The AssetSet affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/adGroupAsset> ;
    sh:name "ad group asset" ;
    sh:description "Output only. The AdGroupAsset affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/combinedAudience> ;
    sh:name "combined audience" ;
    sh:description "Output only. The CombinedAudience affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/campaignBudget> ;
    sh:name "campaign budget" ;
    sh:description "Output only. The CampaignBudget affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The Campaign affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/campaignSharedSet> ;
    sh:name "campaign shared set" ;
    sh:description "Output only. The CampaignSharedSet affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "Output only. The AdGroupCriterion affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/campaignAsset> ;
    sh:name "campaign asset" ;
    sh:description "Output only. The CampaignAsset affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/asset> ;
    sh:name "asset" ;
    sh:description "Output only. The Asset affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChangeStatus/sharedSet> ;
    sh:name "shared set" ;
    sh:description "Output only. The SharedSet affected by this change." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Channel Aggregate Asset View
googleads:ChannelAggregateAssetViewShape a sh:NodeShape ;
  sh:targetClass googleads:ChannelAggregateAssetView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChannelAggregateAssetView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the channel aggregate asset view. Channel aggregate asset view resource names have the form: `customers/{customer_id}/channelAggregateAssetViews/{ChannelAssetV2.advertising_channel_type}~{ChannelAssetV2.asset_id}~{ChannelAssetV2.asset_source}~{ChannelAssetV2.field_type}\"`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChannelAggregateAssetView/assetSource> ;
    sh:name "asset source" ;
    sh:description "Output only. Source of the asset link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATICALLY_CREATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChannelAggregateAssetView/fieldType> ;
    sh:name "field type" ;
    sh:description "Output only. FieldType of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChannelAggregateAssetView/asset> ;
    sh:name "asset" ;
    sh:description "Output only. The ID of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ChannelAggregateAssetView/advertisingChannelType> ;
    sh:name "advertising channel type" ;
    sh:description "Output only. Channel in which the asset served." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "DISPLAY" "SHOPPING" "HOTEL" "VIDEO" "MULTI_CHANNEL" "LOCAL" "SMART" "PERFORMANCE_MAX" "LOCAL_SERVICES" "TRAVEL" "DEMAND_GEN" ) ;
  ] .

# Shape for Click Location
googleads:ClickLocationShape a sh:NodeShape ;
  sh:targetClass googleads:ClickLocation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickLocation/metro> ;
    sh:name "metro" ;
    sh:description "The metro location criterion associated with the impression." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickLocation/region> ;
    sh:name "region" ;
    sh:description "The region location criterion associated with the impression." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickLocation/mostSpecific> ;
    sh:name "most specific" ;
    sh:description "The most specific location criterion associated with the impression." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickLocation/city> ;
    sh:name "city" ;
    sh:description "The city location criterion associated with the impression." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickLocation/country> ;
    sh:name "country" ;
    sh:description "The country location criterion associated with the impression." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Click View
googleads:ClickViewShape a sh:NodeShape ;
  sh:targetClass googleads:ClickView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/locationOfPresence> ;
    sh:name "location of presence" ;
    sh:description "Output only. The location criteria matching the location of presence associated with the impression." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ClickLocationShape ;
    sh:class googleads:ClickLocation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/areaOfInterest> ;
    sh:name "area of interest" ;
    sh:description "Output only. The location criteria matching the area of interest associated with the impression." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ClickLocationShape ;
    sh:class googleads:ClickLocation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/adGroupAd> ;
    sh:name "ad group ad" ;
    sh:description "Output only. The associated ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/userList> ;
    sh:name "user list" ;
    sh:description "Output only. The associated user list, if one exists." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the click view. Click view resource names have the form: `customers/{customer_id}/clickViews/{date (yyyy-MM-dd)}~{gclid}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/campaignLocationTarget> ;
    sh:name "campaign location target" ;
    sh:description "Output only. The associated campaign location target, if one exists." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/gclid> ;
    sh:name "gclid" ;
    sh:description "Output only. The Google Click ID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/keyword> ;
    sh:name "keyword" ;
    sh:description "Output only. The associated keyword, if one exists and the click corresponds to the SEARCH channel." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/keywordInfo> ;
    sh:name "keyword info" ;
    sh:description "Output only. Basic information about the associated keyword, if it exists." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ClickView/pageNumber> ;
    sh:name "page number" ;
    sh:description "Output only. Page number in search results where the ad was shown." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Combined Audience
googleads:CombinedAudienceShape a sh:NodeShape ;
  sh:targetClass googleads:CombinedAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CombinedAudience/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the combined audience. Combined audience names have the form: `customers/{customer_id}/combinedAudience/{combined_audience_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CombinedAudience/description> ;
    sh:name "description" ;
    sh:description "Output only. Description of this combined audience." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CombinedAudience/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of the combined audience." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CombinedAudience/status> ;
    sh:name "status" ;
    sh:description "Output only. Status of this combined audience. Indicates whether the combined audience is enabled or removed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CombinedAudience/name> ;
    sh:name "name" ;
    sh:description "Output only. Name of the combined audience. It should be unique across all combined audiences." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Common Metrics
googleads:CommonMetricsShape a sh:NodeShape ;
  sh:targetClass googleads:CommonMetrics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/auctionInsightSearchAbsoluteTopImpressionPercentage> ;
    sh:name "auction insight search absolute top impression percentage" ;
    sh:description "This metric is part of the Auction Insights report, and tells how often the ads of another participant showed in the most prominent position on the search results page. This percentage is computed only over the auctions that you appeared in the page. This metric is not publicly available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromLocationAssetOrder> ;
    sh:name "all conversions from location asset order" ;
    sh:description "Number of order clicks on any location surface after a chargeable ad event (click or impression). This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valuePerAllConversions> ;
    sh:name "value per all conversions" ;
    sh:description "The value of all conversions divided by the number of all conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionValuePValue> ;
    sh:name "conversion value pvalue" ;
    sh:description "The p-value for the null hypothesis that the experiment has no effect on conversion value. Ranges from 0 to 1. Say if the p-value is 0.03, that means the probability of observing the data, if the experiment has no effect on conversion value, is 3%." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsAbsoluteChangeMarginOfError> ;
    sh:name "conversions absolute change margin of error" ;
    sh:description "The margin of error when estimating the experiment's effect on conversions absolute change. Together with `conversions_absolute_change_point_estimate`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment - control). This field specifies the radius of the confidence interval, which is centered at `conversions_absolute_change_point_estimate`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/grossProfitMicros> ;
    sh:name "gross profit micros" ;
    sh:description "Gross profit is the profit you made from orders attributed to your ads minus the cost of goods sold (COGS). How it works: Gross profit is the revenue you made from sales attributed to your ads minus cost of goods sold. Gross profit calculations only include products that have a cost of goods sold value in Merchant Center. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt in an order from your website. The hat is priced $10 and the shirt is priced $20. The hat has a cost of goods sold value of $3, but the shirt has no cost of goods sold value. Gross profit for this order will only take into account the hat, so it's $7 = $10 - $3. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsUniqueQueryClusters> ;
    sh:name "conversions unique query clusters" ;
    sh:description "Unique query intent cluster count for conversions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allUnitsSold> ;
    sh:name "all units sold" ;
    sh:description "All units sold is the total number of products sold from orders attributed to your ads. Includes the amount from the units_sold metric, plus units sold from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchBudgetLostTopImpressionShare> ;
    sh:name "search budget lost top impression share" ;
    sh:description "The estimated percent of times that your ad didn't show adjacent to the top organic search results due to a low budget. Note: Search budget lost top impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleQuartileP50Rate> ;
    sh:name "active view audible quartile p50rate" ;
    sh:description "The number of impressions that were audible at the second quartile of the ad playback, divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costMicrosChangePointEstimate> ;
    sh:name "cost micros change point estimate" ;
    sh:description "The point estimate when estimating the experiment's effect on cost change. Together with `cost_micros_margin_of_error`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the point estimate, which is the center of the confidence interval: `(cost_micros_change_point_estimate - cost_micros_margin_of_error, cost_micros_change_point_estimate + cost_micros_margin_of_error)`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/benchmarkAverageMaxCpc> ;
    sh:name "benchmark average max cpc" ;
    sh:description "An indication of how other advertisers are bidding on similar products." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/uniqueUsersThreePlus> ;
    sh:name "unique users three plus" ;
    sh:description "This metric counts the unique individuals who were shown your video ad three or more times within the selected date range. This metric cannot be aggregated, and can only be requested for date ranges of 31 days or less." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/phoneThroughRate> ;
    sh:name "phone through rate" ;
    sh:description "Number of phone calls received (`phone_calls`) divided by the number of times your phone number is shown (`phone_impressions`)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoQuartileP75Rate> ;
    sh:name "video quartile p75rate" ;
    sh:description "Percentage of impressions where the viewer watched 75% of your video." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/platformComparableConversions> ;
    sh:name "platform comparable conversions" ;
    sh:description "The number of platform comparable conversions. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/impressionsFromStoreReach> ;
    sh:name "impressions from store reach" ;
    sh:description "The number of times a business's location-based ad was shown. This metric applies to feed items only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageCpc> ;
    sh:name "average cpc" ;
    sh:description "The total cost of all clicks divided by the total number of clicks received." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/interactionRate> ;
    sh:name "interaction rate" ;
    sh:description "How often people interact with your ad after it is shown to them. This is the number of interactions divided by the number of times your ad is shown." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/uniqueUsersFourPlus> ;
    sh:name "unique users four plus" ;
    sh:description "This metric counts the unique individuals who were shown your video ad four or more times within the selected date range. This metric cannot be aggregated, and can only be requested for date ranges of 31 days or less." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/generalInvalidClickRate> ;
    sh:name "general invalid click rate" ;
    sh:description "The percentage of clicks that have been filtered out of your total number of clicks (filtered + non-filtered clicks) due to being general invalid clicks. These are clicks Google considers illegitimate that are detected through routine means of filtration (that is, known invalid data-center traffic, bots and spiders or other crawlers, irregular patterns, etc). You're not charged for them, and they don't affect your account statistics. See [Filtering invalid traffic to ensure quality](https://support.google.com/campaignmanager/answer/6076504)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsByConversionDate> ;
    sh:name "all conversions by conversion date" ;
    sh:description "The total number of conversions. This includes all conversions regardless of the value of include_in_conversions_metric. When this column is selected with date, the values in date column means the conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsAbsoluteChangePValue> ;
    sh:name "conversions absolute change pvalue" ;
    sh:description "The p-value for the null hypothesis that the experiment has no effect on conversions absolute change. Ranges from 0 to 1. Say if the p-value is 0.03, that means the probability of observing the data, if the experiment has no effect on conversions absolute change, is 3%." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allCrossSellUnitsSold> ;
    sh:name "all cross sell units sold" ;
    sh:description "All cross-sell units sold is the total number of products sold as a result of advertising a different product. Includes the amount shown in the cross_sell_units_sold metric, plus cross-sell units sold from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsAbsoluteChangePointEstimate> ;
    sh:name "conversions absolute change point estimate" ;
    sh:description "The point estimate when estimating the experiment's effect on conversions absolute change. Together with `conversions_absolute_change_margin_of_error`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment - control). This field specifies the point estimate, which is the center of the confidence interval: `(conversions_absolute_change_point_estimate - conversions_absolute_change_margin_of_error, conversions_absolute_change_point_estimate + conversions_absolute_change_margin_of_error)`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsByConversionDate> ;
    sh:name "conversions by conversion date" ;
    sh:description "The number of conversions. This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions. When this column is selected with date, the values in date column means the conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/engagementRate> ;
    sh:name "engagement rate" ;
    sh:description "How often people engage with your ad after it's shown to them. This is the number of ad expansions divided by the number of times your ad is shown." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossDeviceConversionsValueMicros> ;
    sh:name "cross device conversions value micros" ;
    sh:description "The sum of the value of cross-device conversions, in micros." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversionsFromLocationAssetOrder> ;
    sh:name "view through conversions from location asset order" ;
    sh:description "Number of order clicks on any location surface after an impression. This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchBudgetLostImpressionShare> ;
    sh:name "search budget lost impression share" ;
    sh:description "The estimated percent of times that your ad was eligible to show on the Search Network but didn't because your budget was too low. Note: Search budget lost impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/organicClicks> ;
    sh:name "organic clicks" ;
    sh:description "The number of times someone clicked your site's listing in the unpaid results for a particular query. See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valuePerConversionsByConversionDate> ;
    sh:name "value per conversions by conversion date" ;
    sh:description "The value of conversions divided by the number of conversions. This only includes conversion actions for which the `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions. When this column is selected with date, the values in date column means the conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costMicrosPValue> ;
    sh:name "cost micros pvalue" ;
    sh:description "The p-value for the null hypothesis that the experiment has no effect on cost. Ranges from 0 to 1. Say if the p-value is 0.03, that means the probability of observing the data, if the experiment has no effect on cost, is 3%." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/publisherPurchasedClicks> ;
    sh:name "publisher purchased clicks" ;
    sh:description "Clicks from properties not owned by the publisher for which the traffic the publisher has paid for or acquired through incentivized activity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allAverageOrderValueMicros> ;
    sh:name "all average order value micros" ;
    sh:description "All average order value is the average revenue you made per order attributed to your ads. Includes the amount from the average_order_value metric, plus avg. order value from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/interactionEventTypes> ;
    sh:name "interaction event types" ;
    sh:description "The types of payable and free interactions." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CLICK" "ENGAGEMENT" "VIDEO_VIEW" "NONE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/hotelEligibleImpressions> ;
    sh:name "hotel eligible impressions" ;
    sh:description "The number of impressions that hotel partners could have had given their feed performance." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averagePageViews> ;
    sh:name "average page views" ;
    sh:description "Average number of pages viewed per session." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsValuePerCost> ;
    sh:name "conversions value per cost" ;
    sh:description "The value of conversions divided by the cost of ad interactions. This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleTwoSecondsImpressionsRate> ;
    sh:name "active view audible two seconds impressions rate" ;
    sh:description "The number of impressions that were audible for at least 2 seconds (cumulative), divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionLastConversionDate> ;
    sh:name "conversion last conversion date" ;
    sh:description "The date of the most recent conversion for this conversion action. The date is in the customer's time zone." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/linkedEntitiesCount> ;
    sh:name "linked entities count" ;
    sh:description "Number of linked resources in which the asset is used. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costPerCurrentModelAttributedConversion> ;
    sh:name "cost per current model attributed conversion" ;
    sh:description "The cost of ad interactions divided by current model attributed conversions. This only includes conversion actions which `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/publisherOrganicClicks> ;
    sh:name "publisher organic clicks" ;
    sh:description "Clicks from properties for which the traffic the publisher has not paid for or acquired through incentivized activity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromInteractionsValuePerInteraction> ;
    sh:name "all conversions from interactions value per interaction" ;
    sh:description "The value of all conversions from interactions divided by the total number of interactions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/coviewedImpressions> ;
    sh:name "coviewed impressions" ;
    sh:description "All co-viewed impressions represent the total number of people who saw your ad. This includes people who are signed into their Google Account, as well as other people who are watching the same ad on a connected TV. This metric is only available for the Campaign resource with adjusted_age_range and adjusted_gender segments. These segmentations are mandatory to get the all coviewed impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/biddableAppInstallConversions> ;
    sh:name "biddable app install conversions" ;
    sh:description "Number of app installs." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/messageImpressions> ;
    sh:name "message impressions" ;
    sh:description "Number of Click To Message impressions that were message tracking eligible." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/clicksPointEstimate> ;
    sh:name "clicks point estimate" ;
    sh:description "The point estimate when estimating the experiment's effect on clicks. Together with `clicks_margin_of_error`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the point estimate, which is the center of the confidence interval: `(clicks_point_estimate - clicks_margin_of_error, clicks_point_estimate + clicks_margin_of_error)`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossSellGrossProfitMicros> ;
    sh:name "cross sell gross profit micros" ;
    sh:description "Cross-sell gross profit is the profit you made from products sold as a result of advertising a different product, minus cost of goods sold (COGS). How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with before the purchase has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the purchase is a sold product. If these products don't match then this is considered cross-sell. Cross-sell gross profit is the revenue you made from cross-sell attributed to your ads minus the cost of the goods sold. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt. The shirt is priced $20 and has a cost of goods sold value of $5. The cross-sell gross profit of this order is $15 = $20 - $5. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromInteractionsRate> ;
    sh:name "all conversions from interactions rate" ;
    sh:description "All conversions from interactions (as oppose to view through conversions) divided by the number of ad interactions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossSellUnitsSold> ;
    sh:name "cross sell units sold" ;
    sh:description "Cross-sell units sold is the total number of products sold as a result of advertising a different product. How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with before the purchase has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the order the customer places is a sold product. If these products don't match then this is considered cross-sell. Cross-sell units sold is the total number of cross-sold products from all orders attributed to your ads. Example: Someone clicked on a Shopping ad for a hat then bought the same hat, a shirt and a jacket. The cross-sell units sold in this order is 2. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/controlClicks> ;
    sh:name "control clicks" ;
    sh:description "The number of clicks on the control arm of an experiment. The treatment clicks value can be selected by using `clicks`." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoTrueviewViewRateShorts> ;
    sh:name "video trueview view rate shorts" ;
    sh:description "The number of TrueView views divided by number of impressions that can potentially lead to TrueView views for Shorts ads." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/platformComparableConversionsValue> ;
    sh:name "platform comparable conversions value" ;
    sh:description "The value of platform comparable conversions. This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/trueviewAverageCpv> ;
    sh:name "trueview average cpv" ;
    sh:description "The average amount you pay each time someone views your ad. The average CPV is defined by the total cost of all ad views divided by the number of TrueView views." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/svr> ;
    sh:name "svr" ;
    sh:description "This feature is available to allowlisted accounts only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/controlConversionValue> ;
    sh:name "control conversion value" ;
    sh:description "The conversion value metric on the control arm of the experiment. The treatment conversion value can be selected by using `conversions_value`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/primaryImpressions> ;
    sh:name "primary impressions" ;
    sh:description "Primary impression is counted each time your ad is served. This metric is only available for the Campaign resource with adjusted_age_range and adjusted_gender segments. These segmentations are mandatory to get the primary impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/messageChats> ;
    sh:name "message chats" ;
    sh:description "Number of message chats initiated for Click To Message impressions that were message tracking eligible." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsFromInteractionsValuePerInteraction> ;
    sh:name "conversions from interactions value per interaction" ;
    sh:description "The value of conversions from interactions divided by the number of ad interactions. This only includes conversion actions which `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleQuartileP25Rate> ;
    sh:name "active view audible quartile p25rate" ;
    sh:description "The number of impressions that were audible at the first quartile of the ad playback, divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/revenueMicros> ;
    sh:name "revenue micros" ;
    sh:description "Revenue is the total amount you made from orders attributed to your ads. How it works: You report conversions with cart data for completed purchases on your website. Revenue is the total value of all the orders you received attributed to your ads, minus any discount. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt in an order from your website. The hat is priced $10 and the shirt is priced $20. The entire order has a $5 discount. The revenue from this order is $25 = ($10 + $20) - $5. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allGrossProfitMargin> ;
    sh:name "all gross profit margin" ;
    sh:description "All gross profit margin is the percentage gross profit you made from orders attributed to your ads, after taking out the cost of goods sold (COGS). This value is between 0.0 and 1.0, where 1.0 means 100%. Includes the amount from the gross_profit_margin metric, plus gross profit margin across all conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/interactions> ;
    sh:name "interactions" ;
    sh:description "The number of interactions. An interaction is the main user action associated with an ad format-clicks for text and shopping ads, views for video ads, and so on." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/clicksMarginOfError> ;
    sh:name "clicks margin of error" ;
    sh:description "The margin of error when estimating the experiment's effect on clicks. Together with `clicks_point_estimate`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the radius of the confidence interval, which is centered at `clicks_point_estimate`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibilityInvalidMeasurableImpressionsRate> ;
    sh:name "active view audibility invalid measurable impressions rate" ;
    sh:description "The number of impressions for which Active View could measure audibility, but that were filtered out by traffic quality filters, divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/optimizationScoreUrl> ;
    sh:name "optimization score url" ;
    sh:description "URL for the optimization score page in the Google Ads web interface. This metric can be selected from `customer` or `campaign`, and can be segmented by `segments.recommendation_type`. For example, `SELECT metrics.optimization_score_url, segments.recommendation_type FROM customer` will return a URL for each unique (customer, recommendation_type) combination." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/auctionInsightSearchOutrankingShare> ;
    sh:name "auction insight search outranking share" ;
    sh:description "This metric is part of the Auction Insights report, and tells the percentage of impressions that your ads outranked (showed above) another participant in the auction, compared to the total number of impressions that your ads were eligible for. Any value below 0.1 is reported as 0.0999. This metric is not publicly available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valuePerConversion> ;
    sh:name "value per conversion" ;
    sh:description "The value of conversions divided by the number of conversions. This only includes conversion actions for which the `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/auctionInsightSearchTopImpressionPercentage> ;
    sh:name "auction insight search top impression percentage" ;
    sh:description "This metric is part of the Auction Insights report, and tells how often the ads of another participant showed adjacent to the top organic search results. This percentage is computed only over the auctions that you appeared in the page. This metric is not publicly available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversions> ;
    sh:name "conversions" ;
    sh:description "The number of conversions. This only includes conversion actions which `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchAbsoluteTopImpressionShare> ;
    sh:name "search absolute top impression share" ;
    sh:description "The percentage of the customer's Shopping or Search ad impressions that are shown in the most prominent Shopping position. See [About top and absolute top metrics](https://support.google.com/google-ads/answer/7501826) for details. Any value below 0.1 is reported as 0.0999." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchBudgetLostAbsoluteTopImpressionShare> ;
    sh:name "search budget lost absolute top impression share" ;
    sh:description "The number estimating how often your ad wasn't the very first ad among the top ads in the search results due to a low budget. Note: Search budget lost absolute top impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossSellCostOfGoodsSoldMicros> ;
    sh:name "cross sell cost of goods sold micros" ;
    sh:description "Cross-sell cost of goods sold (COGS) is the total cost of products sold as a result of advertising a different product. How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with before the purchase has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the order the customer places is a sold product. If these products don't match then this is considered cross-sell. Cross-sell cost of goods sold is the total cost of the products sold that weren't advertised. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt. The hat has a cost of goods sold value of $3, the shirt has a cost of goods sold value of $5. The cross-sell cost of goods sold for this order is $5. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/platformComparableConversionsByConversionDate> ;
    sh:name "platform comparable conversions by conversion date" ;
    sh:description "The number of platform comparable conversions. When this metric is segmented by date, the values in the date segment represent the conversion date. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibilityInvalidGivtMeasurableImpressionsRate> ;
    sh:name "active view audibility invalid givt measurable impressions rate" ;
    sh:description "The number of impressions for which Active View could measure audibility, but that were filtered out by traffic quality filters, divided by the total number of impressions measurable for audibility. Only includes GIVT (general invalid traffic) impressions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/assetPinnedAsHeadlinePositionOneCount> ;
    sh:name "asset pinned as headline position one count" ;
    sh:description "Number of entities in which the asset is pinned to headline 1. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`. This metric is only supported in Search channel." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageTargetRoas> ;
    sh:name "average target roas" ;
    sh:description "The average Target ROAS, or unset if not available (for example, for campaigns that had traffic from portfolio bidding strategies or non-tROAS)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/combinedQueries> ;
    sh:name "combined queries" ;
    sh:description "The number of searches that returned pages from your site in the unpaid results or showed one of your text ads. See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241) for details." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costConvertedCurrencyPerPlatformComparableConversion> ;
    sh:name "cost converted currency per platform comparable conversion" ;
    sh:description "The cost of the platform comparable conversion in the currency of the authorized customer." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewViewability> ;
    sh:name "active view viewability" ;
    sh:description "The percentage of time when your ad appeared on an Active View enabled site (measurable impressions) and was viewable (viewable impressions)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allAverageCartSize> ;
    sh:name "all average cart size" ;
    sh:description "All average cart size is the average number of products in each order attributed to your ads. Includes the amount from the average_cart_size metric, plus avg. cart size from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/auctionInsightSearchImpressionShare> ;
    sh:name "auction insight search impression share" ;
    sh:description "This metric is part of the Auction Insights report, and tells the percentage of impressions that another participant obtained, over the total number of impressions that your ads were eligible for. Any value below 0.1 is reported as 0.0999. This metric is not publicly available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valuePerAllConversionsByConversionDate> ;
    sh:name "value per all conversions by conversion date" ;
    sh:description "The value of all conversions divided by the number of all conversions. When this column is selected with date, the values in date column means the conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/historicalCreativeQualityScore> ;
    sh:name "historical creative quality score" ;
    sh:description "The creative historical quality score." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BELOW_AVERAGE" "AVERAGE" "ABOVE_AVERAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/controlImpressions> ;
    sh:name "control impressions" ;
    sh:description "The impressions metric on the control arm of the experiment. The treatment impressions value can be selected by using `impressions`." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsValueByConversionDate> ;
    sh:name "conversions value by conversion date" ;
    sh:description "The value of conversions. This only includes conversion actions which `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions. When this column is selected with date, the values in date column means the conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchRankLostTopImpressionShare> ;
    sh:name "search rank lost top impression share" ;
    sh:description "The number estimating how often your ad didn't show adjacent to the top organic search results due to poor Ad Rank. Note: Search rank lost top impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/uniqueUsers> ;
    sh:name "unique users" ;
    sh:description "The number of unique users who saw your ad during the requested time period. This metric cannot be aggregated, and can only be requested for date ranges of 92 days or less. This metric is available for following campaign types - Display, Video, Discovery and App." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/currentModelAttributedConversions> ;
    sh:name "current model attributed conversions" ;
    sh:description "Shows how your historic conversions data would look under the attribution model you've currently selected. This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/controlCostMicros> ;
    sh:name "control cost micros" ;
    sh:description "The cost metric on the control arm of the experiment. The treatment cost value can be selected by using `cost_micros`." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/gmailSaves> ;
    sh:name "gmail saves" ;
    sh:description "The number of times someone has saved your Gmail ad to their inbox as a message." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionValueMarginOfError> ;
    sh:name "conversion value margin of error" ;
    sh:description "The margin of error when estimating the experiment's effect on conversion value. Together with `conversion_value_change_point_estimate`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the radius of the confidence interval, which is centered at `conversion_value_change_point_estimate`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/historicalQualityScore> ;
    sh:name "historical quality score" ;
    sh:description "The historical quality score." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleQuartileP100Rate> ;
    sh:name "active view audible quartile p100rate" ;
    sh:description "The number of impressions that were audible at the fourth quartile of the ad playback, divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchClickShare> ;
    sh:name "search click share" ;
    sh:description "The number of clicks you've received on the Search Network divided by the estimated number of clicks you were eligible to receive. Note: Search click share is reported in the range of 0.1 to 1. Any value below 0.1 is reported as 0.0999." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/hotelExpectedCommissionCost> ;
    sh:name "hotel expected commission cost" ;
    sh:description "Expected commission cost. The result of multiplying the commission value times the hotel_commission_rate in advertiser currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/contentImpressionShare> ;
    sh:name "content impression share" ;
    sh:description "The impressions you've received on the Display Network divided by the estimated number of impressions you were eligible to receive. Note: Content impression share is reported in the range of 0.1 to 1. Any value below 0.1 is reported as 0.0999." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allCrossSellRevenueMicros> ;
    sh:name "all cross sell revenue micros" ;
    sh:description "All cross-sell revenue is the total amount you made from products sold as a result of advertising a different product. Includes the amount from the cross_sell_revenue_micros metric, plus cross-sell revenue from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/invalidClicks> ;
    sh:name "invalid clicks" ;
    sh:description "Number of clicks Google considers illegitimate and doesn't charge you for." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allLeadGrossProfitMicros> ;
    sh:name "all lead gross profit micros" ;
    sh:description "All lead gross profit is the profit you made from products sold as a result of advertising the same product, minus cost of goods sold (COGS). Includes the amount from the lead_gross_profit_micros metric, plus lead gross profit from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costOfGoodsSoldMicros> ;
    sh:name "cost of goods sold micros" ;
    sh:description "Cost of goods sold (COGS) is the total cost of the products you sold in orders attributed to your ads. How it works: You can add a cost of goods sold value to every product in Merchant Center. If you report conversions with cart data, the products you sold are matched with their cost of goods sold value and this can be used to calculate the gross profit you made on each order. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt. The hat has a cost of goods sold value of $3, the shirt has a cost of goods sold value of $5. The cost of goods sold for this order is $8 = $3 + $5. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionValuePerCostMarginOfError> ;
    sh:name "conversion value per cost margin of error" ;
    sh:description "The margin of error when estimating the experiment's effect on conversion value per cost. Together with `conversion_value_per_cost_change_point_estimate`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the radius of the confidence interval, which is centered at `conversion_value_per_cost_change_point_estimate`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valuePerCurrentModelAttributedConversion> ;
    sh:name "value per current model attributed conversion" ;
    sh:description "The value of current model attributed conversions divided by the number of the conversions. This only includes conversion actions for which the `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageVideoWatchTimeDurationMillis> ;
    sh:name "average video watch time duration millis" ;
    sh:description "Average video watch time duration in milliseconds for video impressions that started playing." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/currentModelAttributedConversionsValuePerCost> ;
    sh:name "current model attributed conversions value per cost" ;
    sh:description "The value of current model attributed conversions divided by the cost of ad interactions. This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchImpressionShare> ;
    sh:name "search impression share" ;
    sh:description "The impressions you've received on the Search Network divided by the estimated number of impressions you were eligible to receive. Note: Search impression share is reported in the range of 0.1 to 1. Any value below 0.1 is reported as 0.0999." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionValueChangePointEstimate> ;
    sh:name "conversion value change point estimate" ;
    sh:description "The point estimate when estimating the experiment's effect on conversion value change. Together with `conversion_value_margin_of_error`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the point estimate, which is the center of the confidence interval: `(conversion_value_change_point_estimate - conversion_value_margin_of_error, conversion_value_change_point_estimate + conversion_value_margin_of_error)`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/auctionInsightSearchPositionAboveRate> ;
    sh:name "auction insight search position above rate" ;
    sh:description "This metric is part of the Auction Insights report, and tells how often another participant's ad was shown in a higher position than yours, when both of your ads were shown at the same page. This metric is not publicly available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/combinedClicks> ;
    sh:name "combined clicks" ;
    sh:description "The number of times your ad or your site's listing in the unpaid results was clicked. See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costMicrosMarginOfError> ;
    sh:name "cost micros margin of error" ;
    sh:description "The margin of error when estimating the experiment's effect on cost. Together with `cost_micros_change_point_estimate`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the radius of the confidence interval, which is centered at `cost_micros_change_point_estimate`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/benchmarkCtr> ;
    sh:name "benchmark ctr" ;
    sh:description "An indication on how other advertisers' Shopping ads for similar products are performing based on how often people who see their ad click on it." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromStoreVisit> ;
    sh:name "all conversions from store visit" ;
    sh:description "Estimated number of times people visited a business after clicking an ad. This metric applies to feed items only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/auctionInsightSearchOverlapRate> ;
    sh:name "auction insight search overlap rate" ;
    sh:description "This metric is part of the Auction Insights report, and tells how often another participant's ad received an impression when your ad also received an impression. This metric is not publicly available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromClickToCall> ;
    sh:name "all conversions from click to call" ;
    sh:description "The number of times people clicked the \"Call\" button to call a business during or after clicking an ad. This number doesn't include whether or not calls were connected, or the duration of any calls. This metric applies to feed items only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/uniqueUsersTwoPlus> ;
    sh:name "unique users two plus" ;
    sh:description "This metric counts the unique individuals who were shown your video ad two or more times within the selected date range. This metric cannot be aggregated, and can only be requested for date ranges of 31 days or less." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/mobileFriendlyClicksPercentage> ;
    sh:name "mobile friendly clicks percentage" ;
    sh:description "The percentage of mobile clicks that go to a mobile-friendly page." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/grossProfitMargin> ;
    sh:name "gross profit margin" ;
    sh:description "Gross profit margin is the percentage gross profit you made from orders attributed to your ads, after taking out the cost of goods sold (COGS). How it works: You report conversions with cart data for completed purchases on your website. Gross profit margin is the gross profit you made divided by your total revenue and multiplied by 100%. Gross profit margin calculations only include products that have a cost of goods sold value in Merchant Center. Example: Someone bought a hat and a shirt in an order on your website. The hat is priced $10 and has a cost of goods sold value of $3. The shirt is priced $20 but has no cost of goods sold value. Gross profit margin for this order will only take into account the hat because it has a cost of goods sold value, so it's 70% = ($10 - $3)/$10 x 100%. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromLocationAssetMenu> ;
    sh:name "all conversions from location asset menu" ;
    sh:description "Number of menu link clicks on any location surface after a chargeable ad event (click or impression). This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversionsFromLocationAssetDirections> ;
    sh:name "view through conversions from location asset directions" ;
    sh:description "Number of driving directions clicks on any location surface after an impression. This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allOrders> ;
    sh:name "all orders" ;
    sh:description "All orders is total number of purchase conversions attributed to your ads. Includes the amount from the orders metric, plus orders from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromLocationAssetStoreVisits> ;
    sh:name "all conversions from location asset store visits" ;
    sh:description "Estimated number of visits to the business after a chargeable ad event (click or impression). This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/percentNewVisitors> ;
    sh:name "percent new visitors" ;
    sh:description "Percentage of first-time sessions (from people who had never visited your site before). Imported from Google Analytics." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageCpe> ;
    sh:name "average cpe" ;
    sh:description "The average amount that you've been charged for an ad engagement. This amount is the total cost of all ad engagements divided by the total number of ad engagements." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/resultsConversionsPurchase> ;
    sh:name "results conversions purchase" ;
    sh:description "The purchase conversion stats for the unified goals results." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleTwoSecondsImpressions> ;
    sh:name "active view audible two seconds impressions" ;
    sh:description "The number of impressions that were audible for at least 2 seconds (cumulative)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromMenu> ;
    sh:name "all conversions from menu" ;
    sh:description "The number of times people clicked a link to view a business's menu after clicking an ad. This metric applies to feed items only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valueAdjustment> ;
    sh:name "value adjustment" ;
    sh:description "The conversion value rule adjustment from biddable conversions in all conversion categories." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allGrossProfitMicros> ;
    sh:name "all gross profit micros" ;
    sh:description "All gross profit is the total profit made from orders attributed to your ads minus the cost of goods sold (COGS). Includes the amount from the gross_profit_micros metric, plus gross profit from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoQuartileP25Rate> ;
    sh:name "video quartile p25rate" ;
    sh:description "Percentage of impressions where the viewer watched 25% of your video." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/hotelAverageLeadValueMicros> ;
    sh:name "hotel average lead value micros" ;
    sh:description "Average lead value based on clicks." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibilityMeasurableImpressions> ;
    sh:name "active view audibility measurable impressions" ;
    sh:description "The number of impressions for which Active View could measure if the ad was audible." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageCartSize> ;
    sh:name "average cart size" ;
    sh:description "Average cart size is the average number of products in each order attributed to your ads. How it works: You report conversions with cart data for completed purchases on your website. Average cart size is the total number of products sold divided by the total number of orders you received. Example: You received 2 orders, the first included 3 products and the second included 2. The average cart size is 2.5 products = (3+2)/2. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costPerConversion> ;
    sh:name "cost per conversion" ;
    sh:description "The cost of ad interactions divided by conversions. This only includes conversion actions which `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/leadUnitsSold> ;
    sh:name "lead units sold" ;
    sh:description "Lead units sold is the total number of products sold as a result of advertising the same product. How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with before the purchase has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the order the customer places is a sold product. If the advertised and sold products match, then the total number of these products sold is shown under lead units sold. Example: Someone clicked on a Shopping ad for a hat then bought the same hat, a shirt and a jacket. The lead units sold in this order is 1. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/controlCostPerConversion> ;
    sh:name "control cost per conversion" ;
    sh:description "The cost per conversion metric on the control arm of the experiment. The treatment cost per conversion value can be selected by using `cost_per_conversion`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/historicalLandingPageQualityScore> ;
    sh:name "historical landing page quality score" ;
    sh:description "The quality of historical landing page experience." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BELOW_AVERAGE" "AVERAGE" "ABOVE_AVERAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/currentModelAttributedConversionsFromInteractionsRate> ;
    sh:name "current model attributed conversions from interactions rate" ;
    sh:description "Current model attributed conversions from interactions divided by the number of ad interactions (such as clicks for text ads or views for video ads). This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageCpm> ;
    sh:name "average cpm" ;
    sh:description "Average cost-per-thousand impressions (CPM)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/clicks> ;
    sh:name "clicks" ;
    sh:description "The number of clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleImpressionsRate> ;
    sh:name "active view audible impressions rate" ;
    sh:description "The number of impressions that were audible (volume > 0%) at any point during the ad playback, divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costPerConversionMarginOfError> ;
    sh:name "cost per conversion margin of error" ;
    sh:description "The margin of error when estimating the experiment's effect on cost per conversion. Together with `cost_per_conversion_change_point_estimate`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the radius of the confidence interval, which is centered at `cost_per_conversion_change_point_estimate`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsValuePerCost> ;
    sh:name "all conversions value per cost" ;
    sh:description "The value of all conversions divided by the total cost of ad interactions (such as clicks for text ads or views for video ads)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/skAdNetworkTotalConversions> ;
    sh:name "sk ad network total conversions" ;
    sh:description "The total number of iOS Store Kit Ad Network conversions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageTimeOnSite> ;
    sh:name "average time on site" ;
    sh:description "Total duration of all sessions (in seconds) / number of sessions. Imported from Google Analytics." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionValuePerCostPValue> ;
    sh:name "conversion value per cost pvalue" ;
    sh:description "The p-value for the null hypothesis that the experiment has no effect on conversion value per cost. Ranges from 0 to 1. Say if the p-value is 0.03, that means the probability of observing the data, if the experiment has no effect on conversion value per cost, is 3%." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/platformComparableConversionsValuePerCost> ;
    sh:name "platform comparable conversions value per cost" ;
    sh:description "The value of conversions divided by the cost of ad interactions. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/absoluteTopImpressionPercentage> ;
    sh:name "absolute top impression percentage" ;
    sh:description "Search absolute top impression share is the percentage of your Search ad impressions that are shown in the most prominent Search position." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewCtr> ;
    sh:name "active view ctr" ;
    sh:description "Active view measurable clicks divided by active view viewable impressions. This metric is reported only for the Display Network." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageCost> ;
    sh:name "average cost" ;
    sh:description "The average amount you pay per interaction. This amount is the total cost of your ads divided by the total number of interactions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/impressionsPValue> ;
    sh:name "impressions pvalue" ;
    sh:description "The p-value for the null hypothesis that the experiment has no effect on impressions. Ranges from 0 to 1. Say if the p-value is 0.03, that means the probability of observing the data, if the experiment has no effect on impressions, is 3%." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/newCustomerLifetimeValue> ;
    sh:name "new customer lifetime value" ;
    sh:description "New customers' lifetime conversion value. If you have set up customer acquisition goal at either account level or campaign level, this will include the additional conversion value from new customers for biddable conversions. If your campaign has adopted the customer acquisition goal and selected \"bid higher for new customers\", these values will be included in \"conversions_value\" for optimization. See [About customer lifecycle goals](https://support.google.com/google-ads/answer/12080169) for more details." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/assetPinnedTotalCount> ;
    sh:name "asset pinned total count" ;
    sh:description "Number of total usages in which the asset is pinned. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`. This metric is only supported in Search channel." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibilityMeasurableImpressionsRate> ;
    sh:name "active view audibility measurable impressions rate" ;
    sh:description "The number of impressions for which Active View could measure if the ad was audible, divided by the total number of impressions with Active View audio enabled." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/assetPinnedAsHeadlinePositionThreeCount> ;
    sh:name "asset pinned as headline position three count" ;
    sh:description "Number of entities in which the asset is pinned to headline 3. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`. This metric is only supported in Search channel." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversionsFromLocationAssetMenu> ;
    sh:name "view through conversions from location asset menu" ;
    sh:description "Number of menu link clicks on any location surface after an impression. This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewMeasurableCostMicros> ;
    sh:name "active view measurable cost micros" ;
    sh:description "The cost of the impressions you received that were measurable by Active View." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/biddableCohortAppPostInstallConversions> ;
    sh:name "biddable cohort app post install conversions" ;
    sh:description "Participated in-app actions. The number of in app actions that come directly or indirectly from the campaign." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/organicClicksPerQuery> ;
    sh:name "organic clicks per query" ;
    sh:description "The number of times someone clicked your site's listing in the unpaid results (organic_clicks) divided by the total number of searches that returned pages from your site (organic_queries). See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/publisherUnknownClicks> ;
    sh:name "publisher unknown clicks" ;
    sh:description "Clicks from traffic which is not identified as \"Publisher Purchased\" or \"Publisher Organic\"" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/invalidClickRate> ;
    sh:name "invalid click rate" ;
    sh:description "The percentage of clicks filtered out of your total number of clicks (filtered + non-filtered clicks) during the reporting period." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/organicImpressions> ;
    sh:name "organic impressions" ;
    sh:description "The number of listings for your site in the unpaid search results. See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/currentModelAttributedConversionsFromInteractionsValuePerInteraction> ;
    sh:name "current model attributed conversions from interactions value per interaction" ;
    sh:description "The value of current model attributed conversions from interactions divided by the number of ad interactions. This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewCpm> ;
    sh:name "active view cpm" ;
    sh:description "Average cost of viewable impressions (`active_view_impressions`)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewMeasurability> ;
    sh:name "active view measurability" ;
    sh:description "The ratio of impressions that could be measured by Active View over the number of served impressions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allNewCustomerLifetimeValue> ;
    sh:name "all new customer lifetime value" ;
    sh:description "All of new customers' lifetime conversion value. If you have set up customer acquisition goal at either account level or campaign level, this will include the additional conversion value from new customers for both biddable and non-biddable conversions. If your campaign has adopted the customer acquisition goal and selected \"bid higher for new customers\", these values will be included in `all_conversions_value`. See [About customer lifecycle goals](https://support.google.com/google-ads/answer/12080169) for more details." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allLeadCostOfGoodsSoldMicros> ;
    sh:name "all lead cost of goods sold micros" ;
    sh:description "All lead cost of goods sold is the total cost of products sold as a result of advertising the same product. Includes the amount shown in the lead_cost_of_goods_sold_micros metric, plus lead cost of goods sold from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversionsFromLocationAssetWebsite> ;
    sh:name "view through conversions from location asset website" ;
    sh:description "Number of website URL clicks on any location surface after an impression. This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/biddableIndirectInstallFirstInAppConversionMicros> ;
    sh:name "biddable indirect install first in app conversion micros" ;
    sh:description "The number of biddable first in app conversions where the app install was driven by interaction with a web campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/engagements> ;
    sh:name "engagements" ;
    sh:description "The number of engagements. An engagement occurs when a viewer expands your Lightbox ad. Also, in the future, other ad types may support engagement metrics." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromLocationAssetDirections> ;
    sh:name "all conversions from location asset directions" ;
    sh:description "Number of driving directions clicks on any location surface after a chargeable ad event (click or impression). This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/phoneImpressions> ;
    sh:name "phone impressions" ;
    sh:description "Number of offline phone impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/uniqueUsersFivePlus> ;
    sh:name "unique users five plus" ;
    sh:description "This metric counts the unique individuals who were shown your video ad five or more times within the selected date range. This metric cannot be aggregated, and can only be requested for date ranges of 31 days or less." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/contentBudgetLostImpressionShare> ;
    sh:name "content budget lost impression share" ;
    sh:description "The estimated percent of times that your ad was eligible to show on the Display Network but didn't because your budget was too low. Note: Content budget lost impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossDeviceConversions> ;
    sh:name "cross device conversions" ;
    sh:description "Conversions from when a customer clicks on a Google Ads ad on one device, then converts on a different device or browser. Cross-device conversions are already included in `all_conversions`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/currentModelAttributedConversionsValue> ;
    sh:name "current model attributed conversions value" ;
    sh:description "The value of current model attributed conversions. This only includes conversion actions which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allCostOfGoodsSoldMicros> ;
    sh:name "all cost of goods sold micros" ;
    sh:description "All cost of goods sold is the total cost of the products you sold in orders attributed to your ads. Includes the amount from the cost_of_goods_sold_micros metric, plus cost of goods sold from all conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costPerConversionChangePointEstimate> ;
    sh:name "cost per conversion change point estimate" ;
    sh:description "The point estimate when estimating the experiment's effect on cost per conversion change. Together with `cost_per_conversion_margin_of_error`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the point estimate, which is the center of the confidence interval: `(cost_per_conversion_change_point_estimate - cost_per_conversion_margin_of_error, cost_per_conversion_change_point_estimate + cost_per_conversion_margin_of_error)`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/gmailForwards> ;
    sh:name "gmail forwards" ;
    sh:description "The number of times the ad was forwarded to someone else as a message." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchExactMatchImpressionShare> ;
    sh:name "search exact match impression share" ;
    sh:description "The impressions you've received divided by the estimated number of impressions you were eligible to receive on the Search Network for search terms that matched your keywords exactly (or were close variants of your keyword), regardless of your keyword match types. Note: Search exact match impression share is reported in the range of 0.1 to 1. Any value below 0.1 is reported as 0.0999." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchRankLostImpressionShare> ;
    sh:name "search rank lost impression share" ;
    sh:description "The estimated percentage of impressions on the Search Network that your ads didn't receive due to poor Ad Rank. Note: Search rank lost impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromOtherEngagement> ;
    sh:name "all conversions from other engagement" ;
    sh:description "The number of other conversions (for example, posting a review or saving a location for a business) that occurred after people clicked an ad. This metric applies to feed items only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/eligibleImpressionsFromLocationAssetStoreReach> ;
    sh:name "eligible impressions from location asset store reach" ;
    sh:description "Number of impressions in which the business location was shown or the location was used for targeting. This measure is coming from Asset based location." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allLeadRevenueMicros> ;
    sh:name "all lead revenue micros" ;
    sh:description "All lead revenue is the total amount you made from products sold as a result of advertising the same product. Includes the amount shown in the lead_revenue_micros metric, plus lead revenue from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allLeadUnitsSold> ;
    sh:name "all lead units sold" ;
    sh:description "All lead units sold is the total number of products sold as a result of advertising the same product. Includes the amount shown in the lead_units_sold metric, plus lead units sold from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/impressionsMarginOfError> ;
    sh:name "impressions margin of error" ;
    sh:description "The margin of error when estimating the experiment's effect on impressions. Together with `impressions_point_estimate`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the radius of the confidence interval, which is centered at `impressions_point_estimate`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valuePerPlatformComparableConversionsByConversionDate> ;
    sh:name "value per platform comparable conversions by conversion date" ;
    sh:description "The value of platform comparable conversions divided by the number of platform comparable conversions. When this metric is segmented by date, the values in the date segment represent the conversion date. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleThirtySecondsImpressionsRate> ;
    sh:name "active view audible thirty seconds impressions rate" ;
    sh:description "The number of impressions that were audible for at least 30 seconds (cumulative), divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/orders> ;
    sh:name "orders" ;
    sh:description "Orders is the total number of purchase conversions you received attributed to your ads. How it works: You report conversions with cart data for completed purchases on your website. If a conversion is attributed to previous interactions with your ads (clicks for text or Shopping ads, views for video ads etc.) it's counted as an order. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt in an order on your website. Even though they bought 2 products, this would count as 1 order. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/assetPinnedAsDescriptionPositionTwoCount> ;
    sh:name "asset pinned as description position two count" ;
    sh:description "Number of entities in which the asset is pinned to description 2. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`. This metric is only supported in Search channel." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageImpressionFrequencyPerUser> ;
    sh:name "average impression frequency per user" ;
    sh:description "The average number of times a unique user saw your ad during the requested time period. This metric cannot be aggregated, and can only be requested for date ranges of 92 days or less. This metric is available for following campaign types - Display, Video, Discovery and App." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoQuartileP100Rate> ;
    sh:name "video quartile p100rate" ;
    sh:description "Percentage of impressions where the viewer watched all of your video." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/organicImpressionsPerQuery> ;
    sh:name "organic impressions per query" ;
    sh:description "The number of times a page from your site was listed in the unpaid search results (`organic_impressions`) divided by the number of searches returning your site's listing in the unpaid results (`organic_queries`). See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/relativeCtr> ;
    sh:name "relative ctr" ;
    sh:description "Your clickthrough rate (Ctr) divided by the average clickthrough rate of all advertisers on the websites that show your ads. Measures how your ads perform on Display Network sites compared to other ads on the same sites." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoTrueviewViewRate> ;
    sh:name "video trueview view rate" ;
    sh:description "The number of TrueView views your video ad receives divided by its number of impressions, including thumbnail impressions for TrueView in-display ads." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversionsFromLocationAssetOtherEngagement> ;
    sh:name "view through conversions from location asset other engagement" ;
    sh:description "Number of other types of local action clicks on any location surface after an impression. This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/platformComparableConversionsFromInteractionsRate> ;
    sh:name "platform comparable conversions from interactions rate" ;
    sh:description "Platform comparable conversions from interactions divided by the number of ad interactions (such as clicks for text ads or views for video ads). This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/uniqueUsersTenPlus> ;
    sh:name "unique users ten plus" ;
    sh:description "This metric counts the unique individuals who were shown your video ad ten or more times within the selected date range. This metric cannot be aggregated, and can only be requested for date ranges of 31 days or less." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/organicQueries> ;
    sh:name "organic queries" ;
    sh:description "The total number of searches that returned your site's listing in the unpaid results. See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241) for details." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/assetPinnedAsDescriptionPositionOneCount> ;
    sh:name "asset pinned as description position one count" ;
    sh:description "Number of entities in which the asset is pinned to description 1. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`. This metric is only supported in Search channel." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/clicksPValue> ;
    sh:name "clicks pvalue" ;
    sh:description "The p-value for the null hypothesis that the experiment has no effect on clicks. Ranges from 0 to 1. Say if the p-value is 0.03, that means the probability of observing the data, if the experiment has no effect on clicks, is 3%." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/valuePerPlatformComparableConversion> ;
    sh:name "value per platform comparable conversion" ;
    sh:description "The value of platform comparable conversions divided by the number of platform comparable conversions. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleQuartileP75Rate> ;
    sh:name "active view audible quartile p75rate" ;
    sh:description "The number of impressions that were audible at the third quartile of the ad playback, divided by the total number of impressions measurable for audibility." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewImpressions> ;
    sh:name "active view impressions" ;
    sh:description "A measurement of how often your ad has become viewable on a Display Network site." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/impressions> ;
    sh:name "impressions" ;
    sh:description "Count of how often your ad has appeared on a search results page or website on the Google Network." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/phoneCalls> ;
    sh:name "phone calls" ;
    sh:description "Number of offline phone calls." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/clicksUniqueQueryClusters> ;
    sh:name "clicks unique query clusters" ;
    sh:description "Unique query intent cluster count for clicks." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsValueByConversionDate> ;
    sh:name "all conversions value by conversion date" ;
    sh:description "The value of all conversions. When this column is selected with date, the values in date column means the conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoWatchTimeDurationMillis> ;
    sh:name "video watch time duration millis" ;
    sh:description "Total watch time duration in milliseconds for video impressions that started playing. For a small percentage of impressions, we may not be able to measure the watch time accurately. In such cases, we adjust the total time to account for any unmeasured time by applying the average watch time of impressions that were measured." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/impressionsPointEstimate> ;
    sh:name "impressions point estimate" ;
    sh:description "The point estimate when estimating the experiment's effect on impressions. Together with `impressions_margin_of_error`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the point estimate, which is the center of the confidence interval: `(impressions_point_estimate - impressions_margin_of_error, impressions_point_estimate + impressions_margin_of_error)`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/leadGrossProfitMicros> ;
    sh:name "lead gross profit micros" ;
    sh:description "Lead gross profit is the profit you made from products sold as a result of advertising the same product, minus cost of goods sold (COGS). How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with before the purchase has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the order the customer places is a sold product. If the advertised and sold products match, then the revenue you made from these sales minus the cost of goods sold is your lead gross profit. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt. The hat is priced $10 and has a cost of goods sold value of $3. The lead gross profit of this order is $7 = $10 - $3. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoTrueviewViewRateInFeed> ;
    sh:name "video trueview view rate in feed" ;
    sh:description "The number of TrueView views divided by number of impressions that can potentially lead to TrueView views for in-feed formats." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsValue> ;
    sh:name "all conversions value" ;
    sh:description "The value of all conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromStoreWebsite> ;
    sh:name "all conversions from store website" ;
    sh:description "The number of times that people were taken to a business's URL after clicking an ad. This metric applies to feed items only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversions> ;
    sh:name "all conversions" ;
    sh:description "The total number of conversions. This includes all conversions regardless of the value of include_in_conversions_metric." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionLastReceivedRequestDateTime> ;
    sh:name "conversion last received request date time" ;
    sh:description "The last date/time a conversion tag for this conversion action successfully fired and was seen by Google Ads. This firing event may not have been the result of an attributable conversion (for example, because the tag was fired from a browser that did not previously click an ad from an appropriate advertiser). The date/time is in the customer's time zone." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allValueAdjustment> ;
    sh:name "all value adjustment" ;
    sh:description "The conversion value rule adjustment from all conversions in all conversion categories." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/linkedSampleEntities> ;
    sh:name "linked sample entities" ;
    sh:description "A list of up to 20 sample linked resources in which the asset is used. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/messageChatRate> ;
    sh:name "message chat rate" ;
    sh:description "Number of message chats initiated (message_chats) divided by the number of message impressions (message_impressions). Rate at which a user initiates a message chat from an ad impression with a messaging option and message tracking enabled. Note that this rate can be more than 1.0 for a given message impression." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleImpressions> ;
    sh:name "active view audible impressions" ;
    sh:description "The number of impressions that were audible (volume > 0%) at any point during the ad playback." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/skAdNetworkInstalls> ;
    sh:name "sk ad network installs" ;
    sh:description "The number of iOS Store Kit Ad Network conversions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchVolume> ;
    sh:name "search volume" ;
    sh:description "Search volume range for a search term insight category." ;
    sh:node googleads:SearchVolumeRangeShape ;
    sh:class googleads:SearchVolumeRange ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/speedScore> ;
    sh:name "speed score" ;
    sh:description "A measure of how quickly your page loads after clicks on your mobile ads. The score is a range from 1 to 10, 10 being the fastest." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchTopImpressionShare> ;
    sh:name "search top impression share" ;
    sh:description "The impressions you've received among the top ads compared to the estimated number of impressions you were eligible to receive among the top ads. Note: Search top impression share is reported in the range of 0.1 to 1. Any value below 0.1 is reported as 0.0999. Top ads are generally above the top organic results, although they may show below the top organic results on certain queries." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromLocationAssetOtherEngagement> ;
    sh:name "all conversions from location asset other engagement" ;
    sh:description "Number of other types of local action clicks on any location surface after a chargeable ad event (click or impression). This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/hotelCommissionRateMicros> ;
    sh:name "hotel commission rate micros" ;
    sh:description "Commission bid rate in micros. A 20% commission is represented as 200,000." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoTrueviewViews> ;
    sh:name "video trueview views" ;
    sh:description "The number of TrueView views your video ads received." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewMeasurableImpressions> ;
    sh:name "active view measurable impressions" ;
    sh:description "The number of times your ads are appearing on placements in positions where they can be seen." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromDirections> ;
    sh:name "all conversions from directions" ;
    sh:description "The number of times people clicked a \"Get directions\" button to navigate to a business after clicking an ad. This metric applies to feed items only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/combinedClicksPerQuery> ;
    sh:name "combined clicks per query" ;
    sh:description "The number of times your ad or your site's listing in the unpaid results was clicked (combined_clicks) divided by combined_queries. See [About measuring paid and organic search results](https://support.google.com/google-ads/answer/3097241) for details." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/impressionsUniqueQueryClusters> ;
    sh:name "impressions unique query clusters" ;
    sh:description "Unique query intent cluster count for impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costPerAllConversions> ;
    sh:name "cost per all conversions" ;
    sh:description "The cost of ad interactions divided by all conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionValuePerCostChangePointEstimate> ;
    sh:name "conversion value per cost change point estimate" ;
    sh:description "The point estimate when estimating the experiment's effect on conversion value per cost change. Together with `conversion_value_per_cost_margin_of_error`, they describe a confidence interval with a prescribed confidence level for the difference being estimated. The quantity being estimated is (treatment / control - 1). This field specifies the point estimate, which is the center of the confidence interval: `(conversion_value_per_cost_change_point_estimate - conversion_value_per_cost_margin_of_error, conversion_value_per_cost_change_point_estimate + conversion_value_per_cost_margin_of_error)`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/hotelPriceDifferencePercentage> ;
    sh:name "hotel price difference percentage" ;
    sh:description "The average price difference between the price offered by reporting hotel advertiser and the cheapest price offered by the competing advertiser." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossDeviceConversionsValueByConversionDate> ;
    sh:name "cross device conversions value by conversion date" ;
    sh:description "The sum of cross-device conversions value by conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allCrossSellCostOfGoodsSoldMicros> ;
    sh:name "all cross sell cost of goods sold micros" ;
    sh:description "All cross-sell cost of goods sold is the total cost of products sold as a result of advertising a different product. Includes the amount from the cross_sell_cost_of_goods_sold_micros metric, plus cross-sell cost of goods sold from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costMicros> ;
    sh:name "cost micros" ;
    sh:description "The sum of your cost-per-click (CPC) and cost-per-thousand impressions (CPM) costs during this period." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/unitsSold> ;
    sh:name "units sold" ;
    sh:description "Units sold is the total number of products sold from orders attributed to your ads. How it works: You report conversions with cart data for completed purchases on your website. Units sold is the total number of products sold from all orders attributed to your ads. Example: Someone clicked on a Shopping ad for a hat then bought the same hat, a shirt and a jacket. The units sold in this order is 3. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costPerPlatformComparableConversion> ;
    sh:name "cost per platform comparable conversion" ;
    sh:description "The cost of ad interactions divided by the number of platform comparable conversions. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromLocationAssetClickToCall> ;
    sh:name "all conversions from location asset click to call" ;
    sh:description "Number of call button clicks on any location surface after a chargeable ad event (click or impression). This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/gmailSecondaryClicks> ;
    sh:name "gmail secondary clicks" ;
    sh:description "The number of clicks to the landing page on the expanded state of Gmail ads." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/ctr> ;
    sh:name "ctr" ;
    sh:description "The number of clicks your ad receives (Clicks) divided by the number of times your ad is shown (Impressions)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allCrossSellGrossProfitMicros> ;
    sh:name "all cross sell gross profit micros" ;
    sh:description "All cross-sell gross profit is the profit you made from products sold as a result of advertising a different product, minus cost of goods sold (COGS). Includes the amount from the cross_sell_gross_profit_micros metric, plus cross-sell gross profit from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/assetPinnedAsHeadlinePositionTwoCount> ;
    sh:name "asset pinned as headline position two count" ;
    sh:description "Number of entities in which the asset is pinned to headline 2. This metric can only be selected with `ChannelAggregateAssetView` and `CampaignAggregateAssetView`. This metric is only supported in Search channel." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/activeViewAudibleThirtySecondsImpressions> ;
    sh:name "active view audible thirty seconds impressions" ;
    sh:description "The number of impressions that were audible for at least 30 seconds (cumulative)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromLocationAssetWebsite> ;
    sh:name "all conversions from location asset website" ;
    sh:description "Number of website URL clicks on any location surface after a chargeable ad event (click or impression). This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/historicalSearchPredictedCtr> ;
    sh:name "historical search predicted ctr" ;
    sh:description "The historical search predicted click through rate (CTR)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BELOW_AVERAGE" "AVERAGE" "ABOVE_AVERAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossDeviceConversionsValue> ;
    sh:name "cross device conversions value" ;
    sh:description "The sum of the value of cross-device conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/bounceRate> ;
    sh:name "bounce rate" ;
    sh:description "Percentage of clicks where the user only visited a single page on your site. Imported from Google Analytics." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageOrderValueMicros> ;
    sh:name "average order value micros" ;
    sh:description "Average order value is the average revenue you made per order attributed to your ads. How it works: You report conversions with cart data for completed purchases on your website. Average order value is the total revenue from your orders divided by the total number of orders. Example: You received 3 orders which made $10, $15 and $20 worth of revenue. The average order value is $15 = ($10 + $15 + $20)/3. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/platformComparableConversionsValueByConversionDate> ;
    sh:name "platform comparable conversions value by conversion date" ;
    sh:description "The value of platform comparable conversions. When this metric is segmented by date, the values in the date segment represent the conversion date. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allRevenueMicros> ;
    sh:name "all revenue micros" ;
    sh:description "All revenue is the total you made from orders attributed to your ads. Includes the amount from the revenue_micros metric, plus revenue from all your conversion actions, even if your campaigns are not actively optimizing towards them. It's calculated using product info from cart data to give more detail than conversion value alone." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/platformComparableConversionsFromInteractionsValuePerInteraction> ;
    sh:name "platform comparable conversions from interactions value per interaction" ;
    sh:description "The value of platform comparable conversions from interactions divided by the number of ad interactions. This only includes conversion actions for which include_in_conversions_metric attribute is set to true. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/contentRankLostImpressionShare> ;
    sh:name "content rank lost impression share" ;
    sh:description "The estimated percentage of impressions on the Display Network that your ads didn't receive due to poor Ad Rank. Note: Content rank lost impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/optimizationScoreUplift> ;
    sh:name "optimization score uplift" ;
    sh:description "Total optimization score uplift of all recommendations." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/searchRankLostAbsoluteTopImpressionShare> ;
    sh:name "search rank lost absolute top impression share" ;
    sh:description "The number estimating how often your ad wasn't the very first ad among the top ads in the search results due to poor Ad Rank. Note: Search rank lost absolute top impression share is reported in the range of 0 to 0.9. Any value above 0.9 is reported as 0.9001." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/controlConversionValuePerCost> ;
    sh:name "control conversion value per cost" ;
    sh:description "The conversion value per cost metric on the control arm of the experiment. The treatment conversion value per cost value can be selected by using `conversions_value_per_cost`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/allConversionsFromOrder> ;
    sh:name "all conversions from order" ;
    sh:description "The number of times people placed an order at a business after clicking an ad. This metric applies to feed items only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/biddableAppPostInstallConversions> ;
    sh:name "biddable app post install conversions" ;
    sh:description "Number of in-app actions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/costPerConversionPValue> ;
    sh:name "cost per conversion pvalue" ;
    sh:description "The p-value for the null hypothesis that the experiment has no effect on cost per conversion. Ranges from 0 to 1. Say if the p-value is 0.03, that means the probability of observing the data, if the experiment has no effect on cost per conversion, is 3%." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/leadRevenueMicros> ;
    sh:name "lead revenue micros" ;
    sh:description "Lead revenue is the total amount you made from products sold as a result of advertising the same product. How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with before the purchase has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the order the customer places is a sold product. If the advertised and sold products match, then the total value you made from the sales of these products is shown under lead revenue. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt. The hat is priced $10 and the shirt is priced $20. The lead revenue of this order is $10. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/averageTargetCpaMicros> ;
    sh:name "average target cpa micros" ;
    sh:description "The average Target CPA, or unset if not available (for example, for campaigns that had traffic from portfolio bidding strategies or non-tCPA)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversionsFromLocationAssetClickToCall> ;
    sh:name "view through conversions from location asset click to call" ;
    sh:description "Number of call button clicks on any location surface after an impression. This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/leadCostOfGoodsSoldMicros> ;
    sh:name "lead cost of goods sold micros" ;
    sh:description "Lead cost of goods sold (COGS) is the total cost of products sold as a result of advertising the same product. How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the order the customer places is a sold product. If the advertised and sold products match, then the cost of these goods is counted under lead cost of goods sold. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt. The hat has a cost of goods sold value of $3, the shirt has a cost of goods sold value of $5. The lead cost of goods sold for this order is $3. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/storeVisitsLastClickModelAttributedConversions> ;
    sh:name "store visits last click model attributed conversions" ;
    sh:description "The amount of business visits attributed by the last click model." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsFromInteractionsRate> ;
    sh:name "conversions from interactions rate" ;
    sh:description "Conversions from interactions divided by the number of ad interactions (such as clicks for text ads or views for video ads). This only includes conversion actions which `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/topImpressionPercentage> ;
    sh:name "top impression percentage" ;
    sh:description "The percent of your ad impressions that are shown adjacent to the top organic search results." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversions> ;
    sh:name "view through conversions" ;
    sh:description "The total number of view-through conversions. These happen when a customer sees an image or rich media ad, then later completes a conversion on your site without interacting with (for example, clicking on) another ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/controlConversions> ;
    sh:name "control conversions" ;
    sh:description "The conversions metric on the control arm of the experiment. The treatment conversions value can be selected by using `conversions`." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/conversionsValue> ;
    sh:name "conversions value" ;
    sh:description "The value of conversions. This only includes conversion actions which `include_in_conversions_metric` attribute is set to `true`. If you use conversion-based bidding, your bid strategies will optimize for these conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossDeviceConversionsByConversionDate> ;
    sh:name "cross device conversions by conversion date" ;
    sh:description "The number of cross-device conversions by conversion date. Details for the `by_conversion_date` columns are available at [Understand conversions by time with new columns](https://support.google.com/google-ads/answer/9549009)" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/crossSellRevenueMicros> ;
    sh:name "cross sell revenue micros" ;
    sh:description "Cross-sell revenue is the total amount you made from products sold as a result of advertising a different product. How it works: You report conversions with cart data for completed purchases on your website. If the ad that was interacted with before the purchase has an associated product (see Shopping Ads) then this product is considered the advertised product. Any product included in the order the customer places is a sold product. If these products don't match then this is considered cross-sell. Cross-sell revenue is the total value you made from cross-sell attributed to your ads. Example: Someone clicked on a Shopping ad for a hat then bought the same hat and a shirt. The hat is priced $10 and the shirt is priced $20. The cross-sell revenue of this order is $20. This metric is only available if you report conversions with cart data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoQuartileP50Rate> ;
    sh:name "video quartile p50rate" ;
    sh:description "Percentage of impressions where the viewer watched 50% of your video." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/validAcceleratedMobilePagesClicksPercentage> ;
    sh:name "valid accelerated mobile pages clicks percentage" ;
    sh:description "The percentage of ad clicks to Accelerated Mobile Pages (AMP) landing pages that reach a valid AMP page." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/viewThroughConversionsFromLocationAssetStoreVisits> ;
    sh:name "view through conversions from location asset store visits" ;
    sh:description "Estimated number of visits to the business after an impression. This measure is coming from Asset based location." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/videoTrueviewViewRateInStream> ;
    sh:name "video trueview view rate in stream" ;
    sh:description "The number of TrueView views divided by number of impressions that can potentially lead to TrueView views for in-stream formats." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CommonMetrics/generalInvalidClicks> ;
    sh:name "general invalid clicks" ;
    sh:description "Number of general invalid clicks. These are a subset of your invalid clicks that are detected through routine means of filtration (such as known invalid data-center traffic, bots and spiders or other crawlers, irregular patterns, etc.). You're not charged for them, and they don't affect your account statistics. See [Filtering invalid traffic to ensure quality](https://support.google.com/campaignmanager/answer/6076504)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Search Volume Range
googleads:SearchVolumeRangeShape a sh:NodeShape ;
  sh:targetClass googleads:SearchVolumeRange ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SearchVolumeRange/max> ;
    sh:name "max" ;
    sh:description "Upper bound of search volume." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SearchVolumeRange/min> ;
    sh:name "min" ;
    sh:description "Lower bound of search volume." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Consent
googleads:ConsentShape a sh:NodeShape ;
  sh:targetClass googleads:Consent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Consent/adUserData> ;
    sh:name "ad user data" ;
    sh:description "This represents consent for ad user data." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GRANTED" "DENIED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Consent/adPersonalization> ;
    sh:name "ad personalization" ;
    sh:description "This represents consent for ad personalization. This can only be set for OfflineUserDataJobService and UserDataService." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GRANTED" "DENIED" ) ;
  ] .

# Shape for Contact Details
googleads:ContactDetailsShape a sh:NodeShape ;
  sh:targetClass googleads:ContactDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ContactDetails/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "Output only. Phone number of the consumer for the lead. This can be a real phone number or a tracking number. The phone number is returned in E164 format. See https://support.google.com/google-ads/answer/16355235?hl=en to learn more. Example: +16504519489." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ContactDetails/email> ;
    sh:name "email" ;
    sh:description "Output only. Consumer email address." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ContactDetails/consumerName> ;
    sh:name "consumer name" ;
    sh:description "Output only. Consumer name if consumer provided name from Message or Booking form on google.com" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Content Criterion View
googleads:ContentCriterionViewShape a sh:NodeShape ;
  sh:targetClass googleads:ContentCriterionView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ContentCriterionView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the content criterion view. Content criterion view resource names have the form: `customers/{customer_id}/contentCriterionViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Action
googleads:ConversionActionShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionAction ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/countingType> ;
    sh:name "counting type" ;
    sh:description "How to count conversion events for the conversion action." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ONE_PER_CLICK" "MANY_PER_CLICK" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the conversion action. Conversion action resource names have the form: `customers/{customer_id}/conversionActions/{conversion_action_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/valueSettings> ;
    sh:name "value settings" ;
    sh:description "Settings related to the value for conversion events associated with this conversion action." ;
    sh:node googleads:ConversionActionValueSettingsShape ;
    sh:class googleads:ConversionActionValueSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/appId> ;
    sh:name "app id" ;
    sh:description "App ID for an app conversion action." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/firebaseSettings> ;
    sh:name "firebase settings" ;
    sh:description "Output only. Firebase settings for Firebase conversion types." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ConversionActionFirebaseSettingsShape ;
    sh:class googleads:ConversionActionFirebaseSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/clickThroughLookbackWindowDays> ;
    sh:name "click through lookback window days" ;
    sh:description "The maximum number of days that may elapse between an interaction (for example, a click) and a conversion event." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/googleAnalytics4Settings> ;
    sh:name "google analytics4settings" ;
    sh:description "Output only. Google Analytics 4 settings for Google Analytics 4 conversion types." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ConversionActionGoogleAnalytics4SettingsShape ;
    sh:class googleads:ConversionActionGoogleAnalytics4Settings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/mobileAppVendor> ;
    sh:name "mobile app vendor" ;
    sh:description "Output only. Mobile app vendor for an app conversion action." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPLE_APP_STORE" "GOOGLE_APP_STORE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/primaryForGoal> ;
    sh:name "primary for goal" ;
    sh:description "If a conversion action's primary_for_goal bit is false, the conversion action is non-biddable for all campaigns regardless of their customer conversion goal or campaign conversion goal. However, custom conversion goals do not respect primary_for_goal, so if a campaign has a custom conversion goal configured with a primary_for_goal = false conversion action, that conversion action is still biddable. By default, primary_for_goal will be true if not set. In V9, primary_for_goal can only be set to false after creation through an 'update' operation because it's not declared as optional." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/category> ;
    sh:name "category" ;
    sh:description "The category of conversions reported for this conversion action." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT" "PAGE_VIEW" "PURCHASE" "SIGNUP" "DOWNLOAD" "ADD_TO_CART" "BEGIN_CHECKOUT" "SUBSCRIBE_PAID" "PHONE_CALL_LEAD" "IMPORTED_LEAD" "SUBMIT_LEAD_FORM" "BOOK_APPOINTMENT" "REQUEST_QUOTE" "GET_DIRECTIONS" "OUTBOUND_CLICK" "CONTACT" "ENGAGEMENT" "STORE_VISIT" "STORE_SALE" "QUALIFIED_LEAD" "CONVERTED_LEAD" "YOUTUBE_FOLLOW_ON_VIEWS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/type> ;
    sh:name "type" ;
    sh:description "Immutable. The type of this conversion action." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AD_CALL" "CLICK_TO_CALL" "GOOGLE_PLAY_DOWNLOAD" "GOOGLE_PLAY_IN_APP_PURCHASE" "UPLOAD_CALLS" "UPLOAD_CLICKS" "WEBPAGE" "WEBSITE_CALL" "STORE_SALES_DIRECT_UPLOAD" "STORE_SALES" "FIREBASE_ANDROID_FIRST_OPEN" "FIREBASE_ANDROID_IN_APP_PURCHASE" "FIREBASE_ANDROID_CUSTOM" "FIREBASE_IOS_FIRST_OPEN" "FIREBASE_IOS_IN_APP_PURCHASE" "FIREBASE_IOS_CUSTOM" "THIRD_PARTY_APP_ANALYTICS_ANDROID_FIRST_OPEN" "THIRD_PARTY_APP_ANALYTICS_ANDROID_IN_APP_PURCHASE" "THIRD_PARTY_APP_ANALYTICS_ANDROID_CUSTOM" "THIRD_PARTY_APP_ANALYTICS_IOS_FIRST_OPEN" "THIRD_PARTY_APP_ANALYTICS_IOS_IN_APP_PURCHASE" "THIRD_PARTY_APP_ANALYTICS_IOS_CUSTOM" "ANDROID_APP_PRE_REGISTRATION" "ANDROID_INSTALLS_ALL_OTHER_APPS" "FLOODLIGHT_ACTION" "FLOODLIGHT_TRANSACTION" "GOOGLE_HOSTED" "LEAD_FORM_SUBMIT" "SALESFORCE" "SEARCH_ADS_360" "SMART_CAMPAIGN_AD_CLICKS_TO_CALL" "SMART_CAMPAIGN_MAP_CLICKS_TO_CALL" "SMART_CAMPAIGN_MAP_DIRECTIONS" "SMART_CAMPAIGN_TRACKED_CALLS" "STORE_VISITS" "WEBPAGE_CODELESS" "UNIVERSAL_ANALYTICS_GOAL" "UNIVERSAL_ANALYTICS_TRANSACTION" "GOOGLE_ANALYTICS_4_CUSTOM" "GOOGLE_ANALYTICS_4_PURCHASE" "GOOGLE_ANALYTICS_4_GENERATE_LEAD" "GOOGLE_ANALYTICS_4_QUALIFY_LEAD" "GOOGLE_ANALYTICS_4_CLOSE_CONVERT_LEAD" "FIREBASE_ANDROID_GENERATE_LEAD" "FIREBASE_ANDROID_QUALIFY_LEAD" "FIREBASE_ANDROID_CLOSE_CONVERT_LEAD" "FIREBASE_IOS_GENERATE_LEAD" "FIREBASE_IOS_QUALIFY_LEAD" "FIREBASE_IOS_CLOSE_CONVERT_LEAD" "LOCAL_SERVICES_ADS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/includeInConversionsMetric> ;
    sh:name "include in conversions metric" ;
    sh:description "Whether this conversion action should be included in the \"conversions\" metric." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/attributionModelSettings> ;
    sh:name "attribution model settings" ;
    sh:description "Settings related to this conversion action's attribution model." ;
    sh:node googleads:ConversionActionAttributionModelSettingsShape ;
    sh:class googleads:ConversionActionAttributionModelSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the conversion action." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/status> ;
    sh:name "status" ;
    sh:description "The status of this conversion action for conversion event accrual." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "HIDDEN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/ownerCustomer> ;
    sh:name "owner customer" ;
    sh:description "Output only. The resource name of the conversion action owner customer, or null if this is a system-defined conversion action." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/tagSnippets> ;
    sh:name "tag snippets" ;
    sh:description "Output only. The snippets used for tracking conversions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TagSnippetShape ;
    sh:class googleads:TagSnippet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/phoneCallDurationSeconds> ;
    sh:name "phone call duration seconds" ;
    sh:description "The phone call duration in seconds after which a conversion should be reported for this conversion action. The value must be between 0 and 10000, inclusive." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/origin> ;
    sh:name "origin" ;
    sh:description "Output only. The conversion origin of this conversion action." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "GOOGLE_HOSTED" "APP" "CALL_FROM_ADS" "STORE" "YOUTUBE_HOSTED" "LOCAL_SERVICES_ADS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/name> ;
    sh:name "name" ;
    sh:description "The name of the conversion action. This field is required and should not be empty when creating new conversion actions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/viewThroughLookbackWindowDays> ;
    sh:name "view through lookback window days" ;
    sh:description "The maximum number of days which may elapse between an impression and a conversion without an interaction." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionAction/thirdPartyAppAnalyticsSettings> ;
    sh:name "third party app analytics settings" ;
    sh:description "Output only. Third Party App Analytics settings for third party conversion types." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ConversionActionThirdPartyAppAnalyticsSettingsShape ;
    sh:class googleads:ConversionActionThirdPartyAppAnalyticsSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Action Value Settings
googleads:ConversionActionValueSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionActionValueSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionValueSettings/alwaysUseDefaultValue> ;
    sh:name "always use default value" ;
    sh:description "Controls whether the default value and default currency code are used in place of the value and currency code specified in conversion events for this conversion action." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionValueSettings/defaultValue> ;
    sh:name "default value" ;
    sh:description "The value to use when conversion events for this conversion action are sent with an invalid, disallowed or missing value, or when this conversion action is configured to always use the default value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionValueSettings/defaultCurrencyCode> ;
    sh:name "default currency code" ;
    sh:description "The currency code to use when conversion events for this conversion action are sent with an invalid or missing currency code, or when this conversion action is configured to always use the default value." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Action Firebase Settings
googleads:ConversionActionFirebaseSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionActionFirebaseSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionFirebaseSettings/eventName> ;
    sh:name "event name" ;
    sh:description "Output only. The event name of a Firebase conversion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionFirebaseSettings/projectId> ;
    sh:name "project id" ;
    sh:description "Output only. The Firebase project ID of the conversion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionFirebaseSettings/propertyId> ;
    sh:name "property id" ;
    sh:description "Output only. The GA property ID of the conversion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionFirebaseSettings/propertyName> ;
    sh:name "property name" ;
    sh:description "Output only. The GA property name of the conversion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Action Google Analytics4Settings
googleads:ConversionActionGoogleAnalytics4SettingsShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionActionGoogleAnalytics4Settings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionGoogleAnalytics4Settings/propertyId> ;
    sh:name "property id" ;
    sh:description "Output only. The ID of the GA 4 property." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionGoogleAnalytics4Settings/eventName> ;
    sh:name "event name" ;
    sh:description "Output only. The name of the GA 4 event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionGoogleAnalytics4Settings/propertyName> ;
    sh:name "property name" ;
    sh:description "Output only. The name of the GA 4 property." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Action Attribution Model Settings
googleads:ConversionActionAttributionModelSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionActionAttributionModelSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionAttributionModelSettings/attributionModel> ;
    sh:name "attribution model" ;
    sh:description "The attribution model type of this conversion action." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXTERNAL" "GOOGLE_ADS_LAST_CLICK" "GOOGLE_SEARCH_ATTRIBUTION_FIRST_CLICK" "GOOGLE_SEARCH_ATTRIBUTION_LINEAR" "GOOGLE_SEARCH_ATTRIBUTION_TIME_DECAY" "GOOGLE_SEARCH_ATTRIBUTION_POSITION_BASED" "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionAttributionModelSettings/dataDrivenModelStatus> ;
    sh:name "data driven model status" ;
    sh:description "Output only. The status of the data-driven attribution model for the conversion action." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AVAILABLE" "STALE" "EXPIRED" "NEVER_GENERATED" ) ;
  ] .

# Shape for Tag Snippet
googleads:TagSnippetShape a sh:NodeShape ;
  sh:targetClass googleads:TagSnippet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TagSnippet/globalSiteTag> ;
    sh:name "global site tag" ;
    sh:description "The site tag that adds visitors to your basic remarketing lists and sets new cookies on your domain." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TagSnippet/eventSnippet> ;
    sh:name "event snippet" ;
    sh:description "The event snippet that works with the site tag to track actions that should be counted as conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TagSnippet/type> ;
    sh:name "type" ;
    sh:description "The type of the generated tag snippets for tracking conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBPAGE" "WEBPAGE_ONCLICK" "CLICK_TO_CALL" "WEBSITE_CALL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TagSnippet/pageFormat> ;
    sh:name "page format" ;
    sh:description "The format of the web page where the tracking tag and snippet will be installed, for example, HTML." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HTML" "AMP" ) ;
  ] .

# Shape for Conversion Action Third Party App Analytics Settings
googleads:ConversionActionThirdPartyAppAnalyticsSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionActionThirdPartyAppAnalyticsSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionThirdPartyAppAnalyticsSettings/eventName> ;
    sh:name "event name" ;
    sh:description "Output only. The event name of a third-party app analytics conversion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionActionThirdPartyAppAnalyticsSettings/providerName> ;
    sh:name "provider name" ;
    sh:description "Output only. Name of the third-party app analytics provider." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Custom Variable
googleads:ConversionCustomVariableShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionCustomVariable ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionCustomVariable/tag> ;
    sh:name "tag" ;
    sh:description "Required. Immutable. The tag of the conversion custom variable. It is used in the event snippet and sent to Google Ads along with conversion pings. For conversion uploads in Google Ads API, the resource name of the conversion custom variable is used. Tag should be unique. The maximum size of tag is 100 bytes. There should not be any extra spaces before and after. Currently only lowercase letters, numbers and underscores are allowed in the tag." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionCustomVariable/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the conversion custom variable. Conversion custom variable resource names have the form: `customers/{customer_id}/conversionCustomVariables/{conversion_custom_variable_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionCustomVariable/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the conversion custom variable." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionCustomVariable/name> ;
    sh:name "name" ;
    sh:description "Required. The name of the conversion custom variable. Name should be unique. The maximum length of name is 100 characters. There should not be any extra spaces before and after." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionCustomVariable/status> ;
    sh:name "status" ;
    sh:description "The status of the conversion custom variable for conversion event accrual." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ACTIVATION_NEEDED" "ENABLED" "PAUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionCustomVariable/ownerCustomer> ;
    sh:name "owner customer" ;
    sh:description "Output only. The resource name of the customer that owns the conversion custom variable." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Goal Campaign Config
googleads:ConversionGoalCampaignConfigShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionGoalCampaignConfig ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionGoalCampaignConfig/goalConfigLevel> ;
    sh:name "goal config level" ;
    sh:description "The level of goal config the campaign is using." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER" "CAMPAIGN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionGoalCampaignConfig/campaign> ;
    sh:name "campaign" ;
    sh:description "Immutable. The campaign with which this conversion goal campaign config is associated." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionGoalCampaignConfig/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the conversion goal campaign config. Conversion goal campaign config resource names have the form: `customers/{customer_id}/conversionGoalCampaignConfigs/{campaign_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionGoalCampaignConfig/customConversionGoal> ;
    sh:name "custom conversion goal" ;
    sh:description "The custom conversion goal the campaign is using for optimization." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Tracking Setting
googleads:ConversionTrackingSettingShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionTrackingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionTrackingSetting/conversionTrackingStatus> ;
    sh:name "conversion tracking status" ;
    sh:description "Output only. Conversion tracking status. It indicates whether the customer is using conversion tracking, and who is the conversion tracking owner of this customer. If this customer is using cross-account conversion tracking, the value returned will differ based on the `login-customer-id` of the request." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOT_CONVERSION_TRACKED" "CONVERSION_TRACKING_MANAGED_BY_SELF" "CONVERSION_TRACKING_MANAGED_BY_THIS_MANAGER" "CONVERSION_TRACKING_MANAGED_BY_ANOTHER_MANAGER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionTrackingSetting/enhancedConversionsForLeadsEnabled> ;
    sh:name "enhanced conversions for leads enabled" ;
    sh:description "Output only. Whether the customer is opted-in for enhanced conversions for leads. If using cross-account conversion tracking, this value is inherited from the manager. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionTrackingSetting/googleAdsConversionCustomer> ;
    sh:name "google ads conversion customer" ;
    sh:description "The resource name of the customer where conversions are created and managed. This field is read-only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionTrackingSetting/conversionTrackingId> ;
    sh:name "conversion tracking id" ;
    sh:description "Output only. The conversion tracking id used for this account. This id doesn't indicate whether the customer uses conversion tracking (conversion_tracking_status does). This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionTrackingSetting/crossAccountConversionTrackingId> ;
    sh:name "cross account conversion tracking id" ;
    sh:description "Output only. The conversion tracking id of the customer's manager. This is set when the customer is opted into cross account conversion tracking, and it overrides conversion_tracking_id. This field can only be managed through the Google Ads UI. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionTrackingSetting/acceptedCustomerDataTerms> ;
    sh:name "accepted customer data terms" ;
    sh:description "Output only. Whether the customer has accepted customer data terms. If using cross-account conversion tracking, this value is inherited from the manager. This field is read-only. For more information, see https://support.google.com/adspolicy/answer/7475709." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Value Rule
googleads:ConversionValueRuleShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/audienceCondition> ;
    sh:name "audience condition" ;
    sh:description "Condition for audience that must be satisfied for the value rule to apply." ;
    sh:node googleads:ConversionValueRuleValueRuleAudienceConditionShape ;
    sh:class googleads:ConversionValueRuleValueRuleAudienceCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/itineraryCondition> ;
    sh:name "itinerary condition" ;
    sh:description "Condition for itinerary that must be satisfied for the value rule to apply." ;
    sh:node googleads:ConversionValueRuleValueRuleItineraryConditionShape ;
    sh:class googleads:ConversionValueRuleValueRuleItineraryCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/deviceCondition> ;
    sh:name "device condition" ;
    sh:description "Condition for device type that must be satisfied for the value rule to apply." ;
    sh:node googleads:ConversionValueRuleValueRuleDeviceConditionShape ;
    sh:class googleads:ConversionValueRuleValueRuleDeviceCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the conversion value rule. Conversion value rule resource names have the form: `customers/{customer_id}/conversionValueRules/{conversion_value_rule_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the conversion value rule." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/geoLocationCondition> ;
    sh:name "geo location condition" ;
    sh:description "Condition for Geo location that must be satisfied for the value rule to apply." ;
    sh:node googleads:ConversionValueRuleValueRuleGeoLocationConditionShape ;
    sh:class googleads:ConversionValueRuleValueRuleGeoLocationCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/ownerCustomer> ;
    sh:name "owner customer" ;
    sh:description "Output only. The resource name of the conversion value rule's owner customer. When the value rule is inherited from a manager customer, owner_customer will be the resource name of the manager whereas the customer in the resource_name will be of the requesting serving customer. ** Read-only **" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/status> ;
    sh:name "status" ;
    sh:description "The status of the conversion value rule." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "PAUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRule/action> ;
    sh:name "action" ;
    sh:description "Action applied when the rule is triggered." ;
    sh:node googleads:ConversionValueRuleValueRuleActionShape ;
    sh:class googleads:ConversionValueRuleValueRuleAction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Value Rule Value Rule Audience Condition
googleads:ConversionValueRuleValueRuleAudienceConditionShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleAudienceCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleAudienceCondition/userInterests> ;
    sh:name "user interests" ;
    sh:description "User Interests." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleAudienceCondition/userLists> ;
    sh:name "user lists" ;
    sh:description "User Lists." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Conversion Value Rule Value Rule Itinerary Condition
googleads:ConversionValueRuleValueRuleItineraryConditionShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleItineraryCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryCondition/advanceBookingWindow> ;
    sh:name "advance booking window" ;
    sh:description "Range for the number of days between the date of the booking and the start of the itinerary." ;
    sh:node googleads:ConversionValueRuleValueRuleItineraryAdvanceBookingWindowShape ;
    sh:class googleads:ConversionValueRuleValueRuleItineraryAdvanceBookingWindow ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryCondition/travelLength> ;
    sh:name "travel length" ;
    sh:description "Range for the itinerary length in number of nights." ;
    sh:node googleads:ConversionValueRuleValueRuleItineraryTravelLengthShape ;
    sh:class googleads:ConversionValueRuleValueRuleItineraryTravelLength ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryCondition/travelStartDay> ;
    sh:name "travel start day" ;
    sh:description "The days of the week on which this itinerary's travel can start." ;
    sh:node googleads:ConversionValueRuleValueRuleItineraryTravelStartDayShape ;
    sh:class googleads:ConversionValueRuleValueRuleItineraryTravelStartDay ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Value Rule Value Rule Itinerary Advance Booking Window
googleads:ConversionValueRuleValueRuleItineraryAdvanceBookingWindowShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleItineraryAdvanceBookingWindow ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryAdvanceBookingWindow/minDays> ;
    sh:name "min days" ;
    sh:description "Minimum number of days between the date of the booking the start date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryAdvanceBookingWindow/maxDays> ;
    sh:name "max days" ;
    sh:description "Maximum number of days between the date of the booking the start date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Value Rule Value Rule Itinerary Travel Length
googleads:ConversionValueRuleValueRuleItineraryTravelLengthShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleItineraryTravelLength ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelLength/minNights> ;
    sh:name "min nights" ;
    sh:description "Minimum number of nights between the start date and the end date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelLength/maxNights> ;
    sh:name "max nights" ;
    sh:description "Maximum number of days between the start date and the end date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Value Rule Value Rule Itinerary Travel Start Day
googleads:ConversionValueRuleValueRuleItineraryTravelStartDayShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleItineraryTravelStartDay ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelStartDay/thursday> ;
    sh:name "thursday" ;
    sh:description "The travel can start on Thursday." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelStartDay/monday> ;
    sh:name "monday" ;
    sh:description "The travel can start on Monday." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelStartDay/tuesday> ;
    sh:name "tuesday" ;
    sh:description "The travel can start on Tuesday." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelStartDay/saturday> ;
    sh:name "saturday" ;
    sh:description "The travel can start on Saturday." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelStartDay/friday> ;
    sh:name "friday" ;
    sh:description "The travel can start on Friday." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelStartDay/sunday> ;
    sh:name "sunday" ;
    sh:description "The travel can start on Sunday." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleItineraryTravelStartDay/wednesday> ;
    sh:name "wednesday" ;
    sh:description "The travel can start on Wednesday." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Value Rule Value Rule Device Condition
googleads:ConversionValueRuleValueRuleDeviceConditionShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleDeviceCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleDeviceCondition/deviceTypes> ;
    sh:name "device types" ;
    sh:description "Value for device type condition." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MOBILE" "DESKTOP" "TABLET" ) ;
  ] .

# Shape for Conversion Value Rule Value Rule Geo Location Condition
googleads:ConversionValueRuleValueRuleGeoLocationConditionShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleGeoLocationCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleGeoLocationCondition/geoMatchType> ;
    sh:name "geo match type" ;
    sh:description "Included Geo location match type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ANY" "LOCATION_OF_PRESENCE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleGeoLocationCondition/excludedGeoMatchType> ;
    sh:name "excluded geo match type" ;
    sh:description "Excluded Geo location match type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ANY" "LOCATION_OF_PRESENCE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleGeoLocationCondition/excludedGeoTargetConstants> ;
    sh:name "excluded geo target constants" ;
    sh:description "Geo locations that advertisers want to exclude." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleGeoLocationCondition/geoTargetConstants> ;
    sh:name "geo target constants" ;
    sh:description "Geo locations that advertisers want to include." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Conversion Value Rule Value Rule Action
googleads:ConversionValueRuleValueRuleActionShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleValueRuleAction ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleAction/operation> ;
    sh:name "operation" ;
    sh:description "Specifies applied operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADD" "MULTIPLY" "SET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleValueRuleAction/value> ;
    sh:name "value" ;
    sh:description "Specifies applied value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Value Rule Set
googleads:ConversionValueRuleSetShape a sh:NodeShape ;
  sh:targetClass googleads:ConversionValueRuleSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/attachmentType> ;
    sh:name "attachment type" ;
    sh:description "Immutable. Defines the scope where the conversion value rule set is attached." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER" "CAMPAIGN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the conversion value rule set. Conversion value rule set resource names have the form: `customers/{customer_id}/conversionValueRuleSets/{conversion_value_rule_set_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the conversion value rule set." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Defines dimensions for Value Rule conditions. The condition types of value rules within this value rule set must be of these dimensions. The first entry in this list is the primary dimension of the included value rules. When using value rule primary dimension segmentation, conversion values will be segmented into the values adjusted by value rules and the original values, if some value rules apply." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GEO_LOCATION" "DEVICE" "AUDIENCE" "NO_CONDITION" "ITINERARY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/ownerCustomer> ;
    sh:name "owner customer" ;
    sh:description "Output only. The resource name of the conversion value rule set's owner customer. When the value rule set is inherited from a manager customer, owner_customer will be the resource name of the manager whereas the customer in the resource_name will be of the requesting serving customer. ** Read-only **" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the conversion value rule set. ** Read-only **" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "PAUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/conversionActionCategories> ;
    sh:name "conversion action categories" ;
    sh:description "Immutable. The conversion action categories of the conversion value rule set." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT" "PAGE_VIEW" "PURCHASE" "SIGNUP" "DOWNLOAD" "ADD_TO_CART" "BEGIN_CHECKOUT" "SUBSCRIBE_PAID" "PHONE_CALL_LEAD" "IMPORTED_LEAD" "SUBMIT_LEAD_FORM" "BOOK_APPOINTMENT" "REQUEST_QUOTE" "GET_DIRECTIONS" "OUTBOUND_CLICK" "CONTACT" "ENGAGEMENT" "STORE_VISIT" "STORE_SALE" "QUALIFIED_LEAD" "CONVERTED_LEAD" "YOUTUBE_FOLLOW_ON_VIEWS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/campaign> ;
    sh:name "campaign" ;
    sh:description "The resource name of the campaign when the conversion value rule set is attached to a campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ConversionValueRuleSet/conversionValueRules> ;
    sh:name "conversion value rules" ;
    sh:description "Resource names of rules within the rule set." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Credit Details
googleads:CreditDetailsShape a sh:NodeShape ;
  sh:targetClass googleads:CreditDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CreditDetails/creditState> ;
    sh:name "credit state" ;
    sh:description "Output only. Credit state of the lead." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "CREDITED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CreditDetails/creditStateLastUpdateDateTime> ;
    sh:name "credit state last update date time" ;
    sh:description "Output only. The date time when the credit state of the lead was last updated. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Criterion Category Availability
googleads:CriterionCategoryAvailabilityShape a sh:NodeShape ;
  sh:targetClass googleads:CriterionCategoryAvailability ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryAvailability/locale> ;
    sh:name "locale" ;
    sh:description "Locales that are available to the category for the channel." ;
    sh:node googleads:CriterionCategoryLocaleAvailabilityShape ;
    sh:class googleads:CriterionCategoryLocaleAvailability ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryAvailability/channel> ;
    sh:name "channel" ;
    sh:description "Channel types and subtypes that are available to the category." ;
    sh:node googleads:CriterionCategoryChannelAvailabilityShape ;
    sh:class googleads:CriterionCategoryChannelAvailability ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Criterion Category Locale Availability
googleads:CriterionCategoryLocaleAvailabilityShape a sh:NodeShape ;
  sh:targetClass googleads:CriterionCategoryLocaleAvailability ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryLocaleAvailability/languageCode> ;
    sh:name "language code" ;
    sh:description "ISO 639-1 code of the language associated with the category." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryLocaleAvailability/availabilityMode> ;
    sh:name "availability mode" ;
    sh:description "Format of the locale availability. Can be LAUNCHED_TO_ALL (both country and language will be empty), COUNTRY (only country will be set), LANGUAGE (only language wil be set), COUNTRY_AND_LANGUAGE (both country and language will be set)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ALL_LOCALES" "COUNTRY_AND_ALL_LANGUAGES" "LANGUAGE_AND_ALL_COUNTRIES" "COUNTRY_AND_LANGUAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryLocaleAvailability/countryCode> ;
    sh:name "country code" ;
    sh:description "The ISO-3166-1 alpha-2 country code associated with the category." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Criterion Category Channel Availability
googleads:CriterionCategoryChannelAvailabilityShape a sh:NodeShape ;
  sh:targetClass googleads:CriterionCategoryChannelAvailability ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryChannelAvailability/availabilityMode> ;
    sh:name "availability mode" ;
    sh:description "Format of the channel availability. Can be ALL_CHANNELS (the rest of the fields will not be set), CHANNEL_TYPE (only advertising_channel_type type will be set, the category is available to all sub types under it) or CHANNEL_TYPE_AND_SUBTYPES (advertising_channel_type, advertising_channel_sub_type, and include_default_channel_sub_type will all be set)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ALL_CHANNELS" "CHANNEL_TYPE_AND_ALL_SUBTYPES" "CHANNEL_TYPE_AND_SUBSET_SUBTYPES" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryChannelAvailability/advertisingChannelType> ;
    sh:name "advertising channel type" ;
    sh:description "Channel type the category is available to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "DISPLAY" "SHOPPING" "HOTEL" "VIDEO" "MULTI_CHANNEL" "LOCAL" "SMART" "PERFORMANCE_MAX" "LOCAL_SERVICES" "TRAVEL" "DEMAND_GEN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryChannelAvailability/advertisingChannelSubType> ;
    sh:name "advertising channel sub type" ;
    sh:description "Channel subtypes under the channel type the category is available to." ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH_MOBILE_APP" "DISPLAY_MOBILE_APP" "SEARCH_EXPRESS" "DISPLAY_EXPRESS" "SHOPPING_SMART_ADS" "DISPLAY_GMAIL_AD" "DISPLAY_SMART_CAMPAIGN" "VIDEO_ACTION" "VIDEO_NON_SKIPPABLE" "APP_CAMPAIGN" "APP_CAMPAIGN_FOR_ENGAGEMENT" "LOCAL_CAMPAIGN" "SHOPPING_COMPARISON_LISTING_ADS" "SMART_CAMPAIGN" "VIDEO_SEQUENCE" "APP_CAMPAIGN_FOR_PRE_REGISTRATION" "VIDEO_REACH_TARGET_FREQUENCY" "TRAVEL_ACTIVITIES" "YOUTUBE_AUDIO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CriterionCategoryChannelAvailability/includeDefaultChannelSubType> ;
    sh:name "include default channel sub type" ;
    sh:description "Whether default channel sub type is included. For example, advertising_channel_type being DISPLAY and include_default_channel_sub_type being false means that the default display campaign where channel sub type is not set is not included in this availability configuration." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Crm Based User List Info
googleads:CrmBasedUserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:CrmBasedUserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CrmBasedUserListInfo/appId> ;
    sh:name "app id" ;
    sh:description "A string that uniquely identifies a mobile application from which the data was collected. For iOS, the ID string is the 9 digit string that appears at the end of an App Store URL (for example, \"476943146\" for \"Flood-It! 2\" whose App Store link is http://itunes.apple.com/us/app/flood-it!-2/id476943146). For Android, the ID string is the application's package name (for example, \"com.labpixies.colordrips\" for \"Color Drips\" given Google Play link https://play.google.com/store/apps/details?id=com.labpixies.colordrips). Required when creating CrmBasedUserList for uploading mobile advertising IDs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CrmBasedUserListInfo/uploadKeyType> ;
    sh:name "upload key type" ;
    sh:description "Matching key type of the list. Mixed data types are not allowed on the same list. This field is required for an ADD operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CONTACT_INFO" "CRM_ID" "MOBILE_ADVERTISING_ID" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CrmBasedUserListInfo/dataSourceType> ;
    sh:name "data source type" ;
    sh:description "Data source of the list. Default value is FIRST_PARTY. Only customers on the allow-list can create third-party sourced CRM lists." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "FIRST_PARTY" "THIRD_PARTY_CREDIT_BUREAU" "THIRD_PARTY_VOTER_FILE" "THIRD_PARTY_PARTNER_DATA" ) ;
  ] .

# Shape for Currency Constant
googleads:CurrencyConstantShape a sh:NodeShape ;
  sh:targetClass googleads:CurrencyConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CurrencyConstant/code> ;
    sh:name "code" ;
    sh:description "Output only. ISO 4217 three-letter currency code, for example, \"USD\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CurrencyConstant/name> ;
    sh:name "name" ;
    sh:description "Output only. Full English name of the currency." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CurrencyConstant/symbol> ;
    sh:name "symbol" ;
    sh:description "Output only. Standard symbol for describing this currency, for example, '$' for US Dollars." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CurrencyConstant/billableUnitMicros> ;
    sh:name "billable unit micros" ;
    sh:description "Output only. The billable unit for this currency. Billed amounts should be multiples of this value." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CurrencyConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the currency constant. Currency constant resource names have the form: `currencyConstants/{code}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Audience
googleads:CustomAudienceShape a sh:NodeShape ;
  sh:targetClass googleads:CustomAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudience/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the custom audience. Custom audience resource names have the form: `customers/{customer_id}/customAudiences/{custom_audience_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudience/description> ;
    sh:name "description" ;
    sh:description "Description of this custom audience." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudience/type> ;
    sh:name "type" ;
    sh:description "Type of the custom audience. (\"INTEREST\" OR \"PURCHASE_INTENT\" is not allowed for newly created custom audience but kept for existing audiences)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AUTO" "INTEREST" "PURCHASE_INTENT" "SEARCH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudience/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of the custom audience." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudience/status> ;
    sh:name "status" ;
    sh:description "Output only. Status of this custom audience. Indicates whether the custom audience is enabled or removed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudience/name> ;
    sh:name "name" ;
    sh:description "Name of the custom audience. It should be unique for all custom audiences created by a customer. This field is required for creating operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudience/members> ;
    sh:name "members" ;
    sh:description "List of custom audience members that this custom audience is composed of. Members can be added during CustomAudience creation. If members are presented in UPDATE operation, existing members will be overridden." ;
    sh:node googleads:CustomAudienceMemberShape ;
    sh:class googleads:CustomAudienceMember ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Custom Audience Member
googleads:CustomAudienceMemberShape a sh:NodeShape ;
  sh:targetClass googleads:CustomAudienceMember ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudienceMember/url> ;
    sh:name "url" ;
    sh:description "An HTTP URL, protocol-included — at most 2048 characters, which includes contents users have interests in." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudienceMember/memberType> ;
    sh:name "member type" ;
    sh:description "The type of custom audience member, KEYWORD, URL, PLACE_CATEGORY or APP." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "URL" "PLACE_CATEGORY" "APP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudienceMember/keyword> ;
    sh:name "keyword" ;
    sh:description "A keyword or keyword phrase — at most 10 words and 80 characters. Languages with double-width characters such as Chinese, Japanese, or Korean, are allowed 40 characters, which describes the user's interests or actions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudienceMember/app> ;
    sh:name "app" ;
    sh:description "A package name of Android apps which users installed such as com.google.example." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomAudienceMember/placeCategory> ;
    sh:name "place category" ;
    sh:description "A place type described by a place category users visit." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Conversion Goal
googleads:CustomConversionGoalShape a sh:NodeShape ;
  sh:targetClass googleads:CustomConversionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomConversionGoal/conversionActions> ;
    sh:name "conversion actions" ;
    sh:description "Conversion actions that the custom conversion goal makes biddable." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomConversionGoal/id> ;
    sh:name "id" ;
    sh:description "Immutable. The ID for this custom conversion goal." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomConversionGoal/name> ;
    sh:name "name" ;
    sh:description "The name for this custom conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomConversionGoal/status> ;
    sh:name "status" ;
    sh:description "The status of the custom conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomConversionGoal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the custom conversion goal. Custom conversion goal resource names have the form: `customers/{customer_id}/customConversionGoals/{goal_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer
googleads:CustomerShape a sh:NodeShape ;
  sh:targetClass googleads:Customer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/hasPartnersBadge> ;
    sh:name "has partners badge" ;
    sh:description "Output only. Whether the Customer has a Partners program badge. If the Customer is not associated with the Partners program, this will be false. For more information, see https://support.google.com/partners/answer/3125774." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/videoBrandSafetySuitability> ;
    sh:name "video brand safety suitability" ;
    sh:description "Brand Safety setting at the account level. Allows for selecting an inventory type to show your ads on content that is the right fit for your brand. See https://support.google.com/google-ads/answer/7515513." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXPANDED_INVENTORY" "STANDARD_INVENTORY" "LIMITED_INVENTORY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the customer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/manager> ;
    sh:name "manager" ;
    sh:description "Output only. Whether the customer is a manager." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/payPerConversionEligibilityFailureReasons> ;
    sh:name "pay per conversion eligibility failure reasons" ;
    sh:description "Output only. Reasons why the customer is not eligible to use PaymentMode.CONVERSIONS. If the list is empty, the customer is eligible. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOT_ENOUGH_CONVERSIONS" "CONVERSION_LAG_TOO_HIGH" "HAS_CAMPAIGN_WITH_SHARED_BUDGET" "HAS_UPLOAD_CLICKS_CONVERSION" "AVERAGE_DAILY_SPEND_TOO_HIGH" "ANALYSIS_NOT_COMPLETE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/locationAssetAutoMigrationDone> ;
    sh:name "location asset auto migration done" ;
    sh:description "Output only. True if feed based location has been migrated to asset based location." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer. Customer resource names have the form: `customers/{customer_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/customerAgreementSetting> ;
    sh:name "customer agreement setting" ;
    sh:description "Output only. Customer Agreement Setting for a customer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomerAgreementSettingShape ;
    sh:class googleads:CustomerAgreementSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/conversionTrackingSetting> ;
    sh:name "conversion tracking setting" ;
    sh:description "Conversion tracking setting for a customer." ;
    sh:node googleads:ConversionTrackingSettingShape ;
    sh:class googleads:ConversionTrackingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/optimizationScore> ;
    sh:name "optimization score" ;
    sh:description "Output only. Optimization score of the customer. Optimization score is an estimate of how well a customer's campaigns are set to perform. It ranges from 0% (0.0) to 100% (1.0). This field is null for all manager customers, and for unscored non-manager customers. See \"About optimization score\" at https://support.google.com/google-ads/answer/9061546. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/autoTaggingEnabled> ;
    sh:name "auto tagging enabled" ;
    sh:description "Whether auto-tagging is enabled for the customer. Only mutable in an `update` operation." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/imageAssetAutoMigrationDone> ;
    sh:name "image asset auto migration done" ;
    sh:description "Output only. True if feed based image has been migrated to asset based image." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/timeZone> ;
    sh:name "time zone" ;
    sh:description "Immutable. The local timezone ID of the customer." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/localServicesSettings> ;
    sh:name "local services settings" ;
    sh:description "Output only. Settings for Local Services customer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LocalServicesSettingsShape ;
    sh:class googleads:LocalServicesSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the customer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "CANCELED" "SUSPENDED" "CLOSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/containsEuPoliticalAdvertising> ;
    sh:name "contains eu political advertising" ;
    sh:description "Output only. Returns the advertiser self-declaration status of whether this customer contains political advertising content targeted towards the European Union. You can use the Google Ads UI to update this account-level declaration, or use the API to update the self-declaration status of individual campaigns." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CONTAINS_EU_POLITICAL_ADVERTISING" "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/testAccount> ;
    sh:name "test account" ;
    sh:description "Output only. Whether the customer is a test account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/descriptiveName> ;
    sh:name "descriptive name" ;
    sh:description "Optional, non-unique descriptive name of the customer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Immutable. The currency in which the account operates. A subset of the currency codes from the ISO 4217 standard is supported." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/callReportingSetting> ;
    sh:name "call reporting setting" ;
    sh:description "Call reporting setting for a customer. Only mutable in an `update` operation." ;
    sh:node googleads:CallReportingSettingShape ;
    sh:class googleads:CallReportingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/optimizationScoreWeight> ;
    sh:name "optimization score weight" ;
    sh:description "Output only. Optimization score weight of the customer. Optimization score weight can be used to compare/aggregate optimization scores across multiple non-manager customers. The aggregate optimization score of a manager is computed as the sum over all of their customers of `Customer.optimization_score * Customer.optimization_score_weight`. This field is 0 for all manager customers, and for unscored non-manager customers. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/videoCustomer> ;
    sh:name "video customer" ;
    sh:description "Video specific information about a Customer." ;
    sh:node googleads:VideoCustomerShape ;
    sh:class googleads:VideoCustomer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/imageAssetAutoMigrationDoneDateTime> ;
    sh:name "image asset auto migration done date time" ;
    sh:description "Output only. Timestamp of migration from feed based image to asset base image in yyyy-MM-dd HH:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The URL template for appending params to the final URL. Only mutable in an `update` operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/remarketingSetting> ;
    sh:name "remarketing setting" ;
    sh:description "Output only. Remarketing setting for a customer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RemarketingSettingShape ;
    sh:class googleads:RemarketingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/locationAssetAutoMigrationDoneDateTime> ;
    sh:name "location asset auto migration done date time" ;
    sh:description "Output only. Timestamp of migration from feed based location to asset base location in yyyy-MM-dd HH:mm:ss format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Customer/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The URL template for constructing a tracking URL out of parameters. Only mutable in an `update` operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Agreement Setting
googleads:CustomerAgreementSettingShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerAgreementSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAgreementSetting/acceptedLeadFormTerms> ;
    sh:name "accepted lead form terms" ;
    sh:description "Output only. Whether the customer has accepted lead form term of service." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Local Services Settings
googleads:LocalServicesSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesSettings/granularLicenseStatuses> ;
    sh:name "granular license statuses" ;
    sh:description "Output only. A read-only list of geo vertical level license statuses." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:GranularLicenseStatusShape ;
    sh:class googleads:GranularLicenseStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesSettings/granularInsuranceStatuses> ;
    sh:name "granular insurance statuses" ;
    sh:description "Output only. A read-only list of geo vertical level insurance statuses." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:GranularInsuranceStatusShape ;
    sh:class googleads:GranularInsuranceStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Granular License Status
googleads:GranularLicenseStatusShape a sh:NodeShape ;
  sh:targetClass googleads:GranularLicenseStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GranularLicenseStatus/verificationStatus> ;
    sh:name "verification status" ;
    sh:description "Output only. Granular license status, per geo + vertical." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEEDS_REVIEW" "FAILED" "PASSED" "NOT_APPLICABLE" "NO_SUBMISSION" "PARTIAL_SUBMISSION" "PENDING_ESCALATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GranularLicenseStatus/categoryId> ;
    sh:name "category id" ;
    sh:description "Output only. Service category associated with the status. For example, xcat:service_area_business_plumber. For more details see: https://developers.google.com/google-ads/api/data/codes-formats#local_services_ids" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GranularLicenseStatus/geoCriterionId> ;
    sh:name "geo criterion id" ;
    sh:description "Output only. Geotarget criterion ID associated with the status. Can be on country or state/province geo level, depending on requirements and location. See https://developers.google.com/google-ads/api/data/geotargets for more information." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Granular Insurance Status
googleads:GranularInsuranceStatusShape a sh:NodeShape ;
  sh:targetClass googleads:GranularInsuranceStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GranularInsuranceStatus/verificationStatus> ;
    sh:name "verification status" ;
    sh:description "Output only. Granular insurance status, per geo + vertical." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEEDS_REVIEW" "FAILED" "PASSED" "NOT_APPLICABLE" "NO_SUBMISSION" "PARTIAL_SUBMISSION" "PENDING_ESCALATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GranularInsuranceStatus/categoryId> ;
    sh:name "category id" ;
    sh:description "Output only. Service category associated with the status. For example, xcat:service_area_business_plumber. For more details see: https://developers.google.com/google-ads/api/data/codes-formats#local_services_ids" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GranularInsuranceStatus/geoCriterionId> ;
    sh:name "geo criterion id" ;
    sh:description "Output only. Geotarget criterion ID associated with the status. Can be on country or state/province geo level, depending on requirements and location. See https://developers.google.com/google-ads/api/data/geotargets for more information." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Video Customer
googleads:VideoCustomerShape a sh:NodeShape ;
  sh:targetClass googleads:VideoCustomer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoCustomer/thirdPartyIntegrationPartners> ;
    sh:name "third party integration partners" ;
    sh:description "Third Party integration partners." ;
    sh:node googleads:CustomerThirdPartyIntegrationPartnersShape ;
    sh:class googleads:CustomerThirdPartyIntegrationPartners ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Third Party Integration Partners
googleads:CustomerThirdPartyIntegrationPartnersShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerThirdPartyIntegrationPartners ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyIntegrationPartners/brandSafetyIntegrationPartners> ;
    sh:name "brand safety integration partners" ;
    sh:description "Allowed third party integration partners for brand safety verification." ;
    sh:node googleads:CustomerThirdPartyBrandSafetyIntegrationPartnerShape ;
    sh:class googleads:CustomerThirdPartyBrandSafetyIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyIntegrationPartners/brandLiftIntegrationPartners> ;
    sh:name "brand lift integration partners" ;
    sh:description "Allowed third party integration partners for Brand Lift verification." ;
    sh:node googleads:CustomerThirdPartyBrandLiftIntegrationPartnerShape ;
    sh:class googleads:CustomerThirdPartyBrandLiftIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyIntegrationPartners/reachIntegrationPartners> ;
    sh:name "reach integration partners" ;
    sh:description "Allowed third party integration partners for reach verification." ;
    sh:node googleads:CustomerThirdPartyReachIntegrationPartnerShape ;
    sh:class googleads:CustomerThirdPartyReachIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyIntegrationPartners/viewabilityIntegrationPartners> ;
    sh:name "viewability integration partners" ;
    sh:description "Allowed third party integration partners for YouTube viewability verification." ;
    sh:node googleads:CustomerThirdPartyViewabilityIntegrationPartnerShape ;
    sh:class googleads:CustomerThirdPartyViewabilityIntegrationPartner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Third Party Brand Safety Integration Partner
googleads:CustomerThirdPartyBrandSafetyIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerThirdPartyBrandSafetyIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyBrandSafetyIntegrationPartner/brandSafetyIntegrationPartner> ;
    sh:name "brand safety integration partner" ;
    sh:description "Allowed third party integration partners for brand safety verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DOUBLE_VERIFY" "INTEGRAL_AD_SCIENCE" "ZEFR" ) ;
  ] .

# Shape for Customer Third Party Brand Lift Integration Partner
googleads:CustomerThirdPartyBrandLiftIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerThirdPartyBrandLiftIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyBrandLiftIntegrationPartner/brandLiftIntegrationPartner> ;
    sh:name "brand lift integration partner" ;
    sh:description "Allowed Third Party integration partners for Brand Lift verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KANTAR_MILLWARD_BROWN" "DYNATA" "INTAGE" "MACROMILL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyBrandLiftIntegrationPartner/allowShareCost> ;
    sh:name "allow share cost" ;
    sh:description "If true, cost data can be shared with this vendor." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Third Party Reach Integration Partner
googleads:CustomerThirdPartyReachIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerThirdPartyReachIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyReachIntegrationPartner/reachIntegrationPartner> ;
    sh:name "reach integration partner" ;
    sh:description "Allowed Third Party integration partners for reach verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NIELSEN" "COMSCORE" "KANTAR_MILLWARD_BROWN" "VIDEO_RESEARCH" "GEMIUS" "MEDIA_SCOPE" "AUDIENCE_PROJECT" "VIDEO_AMP" "ISPOT_TV" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyReachIntegrationPartner/allowShareCost> ;
    sh:name "allow share cost" ;
    sh:description "If true, cost data can be shared with this vendor." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Third Party Viewability Integration Partner
googleads:CustomerThirdPartyViewabilityIntegrationPartnerShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerThirdPartyViewabilityIntegrationPartner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyViewabilityIntegrationPartner/viewabilityIntegrationPartner> ;
    sh:name "viewability integration partner" ;
    sh:description "Allowed third party integration partners for YouTube viewability verification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DOUBLE_VERIFY" "INTEGRAL_AD_SCIENCE" "ZEFR" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerThirdPartyViewabilityIntegrationPartner/allowShareCost> ;
    sh:name "allow share cost" ;
    sh:description "If true, cost data can be shared with this vendor." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Remarketing Setting
googleads:RemarketingSettingShape a sh:NodeShape ;
  sh:targetClass googleads:RemarketingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RemarketingSetting/googleGlobalSiteTag> ;
    sh:name "google global site tag" ;
    sh:description "Output only. The Google tag." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Asset Set
googleads:CustomerAssetSetShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerAssetSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAssetSet/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer asset set. Asset set asset resource names have the form: `customers/{customer_id}/customerAssetSets/{asset_set_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAssetSet/assetSet> ;
    sh:name "asset set" ;
    sh:description "Immutable. The asset set which is linked to the customer." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAssetSet/customer> ;
    sh:name "customer" ;
    sh:description "Immutable. The customer to which this asset set is linked." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerAssetSet/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the customer asset set asset. Read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] .

# Shape for Customer Client
googleads:CustomerClientShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerClient ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/appliedLabels> ;
    sh:name "applied labels" ;
    sh:description "Output only. The resource names of the labels owned by the requesting customer that are applied to the client customer. Label resource names have the form: `customers/{customer_id}/labels/{label_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the customer client. CustomerClient resource names have the form: `customers/{customer_id}/customerClients/{client_customer_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/clientCustomer> ;
    sh:name "client customer" ;
    sh:description "Output only. The resource name of the client-customer which is linked to the given customer. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/hidden> ;
    sh:name "hidden" ;
    sh:description "Output only. Specifies whether this is a [hidden account](https://support.google.com/google-ads/answer/7519830). Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/manager> ;
    sh:name "manager" ;
    sh:description "Output only. Identifies if the client is a manager. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the client customer. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the client customer. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "CANCELED" "SUSPENDED" "CLOSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/timeZone> ;
    sh:name "time zone" ;
    sh:description "Output only. Common Locale Data Repository (CLDR) string representation of the time zone of the client, for example, America/Los_Angeles. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/descriptiveName> ;
    sh:name "descriptive name" ;
    sh:description "Output only. Descriptive name for the client. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Output only. Currency code (for example, 'USD', 'EUR') for the client. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/level> ;
    sh:name "level" ;
    sh:description "Output only. Distance between given customer and client. For self link, the level value will be 0. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClient/testAccount> ;
    sh:name "test account" ;
    sh:description "Output only. Identifies if the client is a test account. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Client Link
googleads:CustomerClientLinkShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerClientLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClientLink/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Name of the resource. CustomerClientLink resource names have the form: `customers/{customer_id}/customerClientLinks/{client_customer_id}~{manager_link_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClientLink/clientCustomer> ;
    sh:name "client customer" ;
    sh:description "Immutable. The client customer linked to this customer." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClientLink/hidden> ;
    sh:name "hidden" ;
    sh:description "The visibility of the link. Users can choose whether or not to see hidden links in the Google Ads UI. Default value is false" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClientLink/status> ;
    sh:name "status" ;
    sh:description "This is the status of the link between client and manager." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ACTIVE" "INACTIVE" "PENDING" "REFUSED" "CANCELED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerClientLink/managerLinkId> ;
    sh:name "manager link id" ;
    sh:description "Output only. This is uniquely identifies a customer client link. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Conversion Goal
googleads:CustomerConversionGoalShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerConversionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerConversionGoal/biddable> ;
    sh:name "biddable" ;
    sh:description "The biddability of the customer conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerConversionGoal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer conversion goal. Customer conversion goal resource names have the form: `customers/{customer_id}/customerConversionGoals/{category}~{origin}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerConversionGoal/category> ;
    sh:name "category" ;
    sh:description "The conversion category of this customer conversion goal. Only conversion actions that have this category will be included in this goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT" "PAGE_VIEW" "PURCHASE" "SIGNUP" "DOWNLOAD" "ADD_TO_CART" "BEGIN_CHECKOUT" "SUBSCRIBE_PAID" "PHONE_CALL_LEAD" "IMPORTED_LEAD" "SUBMIT_LEAD_FORM" "BOOK_APPOINTMENT" "REQUEST_QUOTE" "GET_DIRECTIONS" "OUTBOUND_CLICK" "CONTACT" "ENGAGEMENT" "STORE_VISIT" "STORE_SALE" "QUALIFIED_LEAD" "CONVERTED_LEAD" "YOUTUBE_FOLLOW_ON_VIEWS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerConversionGoal/origin> ;
    sh:name "origin" ;
    sh:description "The conversion origin of this customer conversion goal. Only conversion actions that have this conversion origin will be included in this goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "GOOGLE_HOSTED" "APP" "CALL_FROM_ADS" "STORE" "YOUTUBE_HOSTED" "LOCAL_SERVICES_ADS" ) ;
  ] .

# Shape for Customer Customizer
googleads:CustomerCustomizerShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerCustomizer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerCustomizer/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer customizer. Customer customizer resource names have the form: `customers/{customer_id}/customerCustomizers/{customizer_attribute_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerCustomizer/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the customer customizer attribute." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerCustomizer/value> ;
    sh:name "value" ;
    sh:description "Required. The value to associate with the customizer attribute at this level. The value must be of the type specified for the CustomizerAttribute." ;
    sh:node googleads:CustomizerValueShape ;
    sh:class googleads:CustomizerValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerCustomizer/customizerAttribute> ;
    sh:name "customizer attribute" ;
    sh:description "Required. Immutable. The customizer attribute which is linked to the customer." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Label
googleads:CustomerLabelShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerLabel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLabel/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Name of the resource. Customer label resource names have the form: `customers/{customer_id}/customerLabels/{label_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLabel/customer> ;
    sh:name "customer" ;
    sh:description "Output only. The resource name of the customer to which the label is attached. This field should not be set when creating a new `CustomerLabel`." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLabel/label> ;
    sh:name "label" ;
    sh:description "Output only. The resource name of the label assigned to the customer. This field should not be set when creating a new `CustomerLabel`. Note: the Customer ID portion of the label resource name is not validated when creating a new `CustomerLabel`." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Lifecycle Goal
googleads:CustomerLifecycleGoalShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerLifecycleGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLifecycleGoal/customerAcquisitionGoalValueSettings> ;
    sh:name "customer acquisition goal value settings" ;
    sh:description "Output only. Customer acquisition goal customer level value settings." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LifecycleGoalValueSettingsShape ;
    sh:class googleads:LifecycleGoalValueSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLifecycleGoal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer lifecycle goal. Customer lifecycle resource names have the form: `customers/{customer_id}/customerLifecycleGoal`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerLifecycleGoal/ownerCustomer> ;
    sh:name "owner customer" ;
    sh:description "Output only. The resource name of the customer which owns the lifecycle goal." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Manager Link
googleads:CustomerManagerLinkShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerManagerLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerManagerLink/managerCustomer> ;
    sh:name "manager customer" ;
    sh:description "Output only. The manager customer linked to the customer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerManagerLink/managerLinkId> ;
    sh:name "manager link id" ;
    sh:description "Output only. ID of the customer-manager link. This field is read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerManagerLink/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Name of the resource. CustomerManagerLink resource names have the form: `customers/{customer_id}/customerManagerLinks/{manager_customer_id}~{manager_link_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerManagerLink/status> ;
    sh:name "status" ;
    sh:description "Status of the link between the customer and the manager." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ACTIVE" "INACTIVE" "PENDING" "REFUSED" "CANCELED" ) ;
  ] .

# Shape for Customer Match User List Metadata
googleads:CustomerMatchUserListMetadataShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerMatchUserListMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerMatchUserListMetadata/consent> ;
    sh:name "consent" ;
    sh:description "The consent setting for all the users in this job." ;
    sh:node googleads:ConsentShape ;
    sh:class googleads:Consent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerMatchUserListMetadata/userList> ;
    sh:name "user list" ;
    sh:description "The resource name of remarketing list to update data. Required for job of CUSTOMER_MATCH_USER_LIST type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Negative Criterion
googleads:CustomerNegativeCriterionShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerNegativeCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/negativeKeywordList> ;
    sh:name "negative keyword list" ;
    sh:description "Immutable. NegativeKeywordList." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:NegativeKeywordListInfoShape ;
    sh:class googleads:NegativeKeywordListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/placement> ;
    sh:name "placement" ;
    sh:description "Immutable. Placement." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:PlacementInfoShape ;
    sh:class googleads:PlacementInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/youtubeVideo> ;
    sh:name "youtube video" ;
    sh:description "Immutable. YouTube Video." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeVideoInfoShape ;
    sh:class googleads:YouTubeVideoInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customer negative criterion. Customer negative criterion resource names have the form: `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/contentLabel> ;
    sh:name "content label" ;
    sh:description "Immutable. ContentLabel." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ContentLabelInfoShape ;
    sh:class googleads:ContentLabelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "PLACEMENT" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "DEVICE" "LOCATION" "LISTING_GROUP" "AD_SCHEDULE" "AGE_RANGE" "GENDER" "INCOME_RANGE" "PARENTAL_STATUS" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "USER_LIST" "PROXIMITY" "TOPIC" "LISTING_SCOPE" "LANGUAGE" "IP_BLOCK" "CONTENT_LABEL" "CARRIER" "USER_INTEREST" "WEBPAGE" "OPERATING_SYSTEM_VERSION" "APP_PAYMENT_MODEL" "MOBILE_DEVICE" "CUSTOM_AFFINITY" "CUSTOM_INTENT" "LOCATION_GROUP" "CUSTOM_AUDIENCE" "COMBINED_AUDIENCE" "KEYWORD_THEME" "AUDIENCE" "NEGATIVE_KEYWORD_LIST" "LOCAL_SERVICE_ID" "SEARCH_THEME" "BRAND" "BRAND_LIST" "LIFE_EVENT" "WEBPAGE_LIST" "VIDEO_LINEUP" "PLACEMENT_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE" "RETAIL_FILTER_BUNDLE" "RETAIL_FILTER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/ipBlock> ;
    sh:name "ip block" ;
    sh:description "Immutable. IpBlock. You can exclude up to 500 IP addresses per account." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:IpBlockInfoShape ;
    sh:class googleads:IpBlockInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/placementList> ;
    sh:name "placement list" ;
    sh:description "Immutable. PlacementList." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:PlacementListInfoShape ;
    sh:class googleads:PlacementListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/mobileApplication> ;
    sh:name "mobile application" ;
    sh:description "Immutable. MobileApplication." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileApplicationInfoShape ;
    sh:class googleads:MobileApplicationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/mobileAppCategory> ;
    sh:name "mobile app category" ;
    sh:description "Immutable. MobileAppCategory." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileAppCategoryInfoShape ;
    sh:class googleads:MobileAppCategoryInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerNegativeCriterion/youtubeChannel> ;
    sh:name "youtube channel" ;
    sh:description "Immutable. YouTube Channel." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeChannelInfoShape ;
    sh:class googleads:YouTubeChannelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Negative Keyword List Info
googleads:NegativeKeywordListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:NegativeKeywordListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.NegativeKeywordListInfo/sharedSet> ;
    sh:name "shared set" ;
    sh:description "The NegativeKeywordListInfo shared set resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Placement List Info
googleads:PlacementListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:PlacementListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PlacementListInfo/sharedSet> ;
    sh:name "shared set" ;
    sh:description "The PlacementListInfo shared set resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Search Term Insight
googleads:CustomerSearchTermInsightShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerSearchTermInsight ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerSearchTermInsight/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the customer level search term insight. Customer level search term insight resource names have the form: `customers/{customer_id}/customerSearchTermInsights/{category_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerSearchTermInsight/categoryLabel> ;
    sh:name "category label" ;
    sh:description "Output only. The label for the search category. An empty string denotes the catch-all category for search terms that didn't fit into another category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerSearchTermInsight/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the insight." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer User Access
googleads:CustomerUserAccessShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerUserAccess ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/emailAddress> ;
    sh:name "email address" ;
    sh:description "Output only. Email address of the user. Read only field" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/pendingMultiPartyAuthReview> ;
    sh:name "pending multi party auth review" ;
    sh:description "Output only. The resource name of the pending Multi-Party Authorization review. Read only field" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/accessRole> ;
    sh:name "access role" ;
    sh:description "Access role of the user." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADMIN" "STANDARD" "READ_ONLY" "EMAIL_ONLY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/accessCreationDateTime> ;
    sh:name "access creation date time" ;
    sh:description "Output only. The customer user access creation time. Read only field The format is \"YYYY-MM-DD HH:MM:SS\". Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/userId> ;
    sh:name "user id" ;
    sh:description "Output only. User id of the user with the customer access. Read only field" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Name of the resource. Resource names have the form: `customers/{customer_id}/customerUserAccesses/{user_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/inviterUserEmailAddress> ;
    sh:name "inviter user email address" ;
    sh:description "Output only. The email address of the inviter user. Read only field" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccess/passkeyEnabled> ;
    sh:name "passkey enabled" ;
    sh:description "Output only. Whether the user has passkey enabled. Read only field" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer User Access Invitation
googleads:CustomerUserAccessInvitationShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerUserAccessInvitation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessInvitation/invitationId> ;
    sh:name "invitation id" ;
    sh:description "Output only. The ID of the invitation. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessInvitation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Name of the resource. Resource names have the form: `customers/{customer_id}/customerUserAccessInvitations/{invitation_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessInvitation/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. Time invitation was created. This field is read-only. The format is \"YYYY-MM-DD HH:MM:SS\". Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessInvitation/emailAddress> ;
    sh:name "email address" ;
    sh:description "Immutable. Email address the invitation was sent to. This can differ from the email address of the account that accepts the invite." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessInvitation/accessRole> ;
    sh:name "access role" ;
    sh:description "Immutable. Access role of the user." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADMIN" "STANDARD" "READ_ONLY" "EMAIL_ONLY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessInvitation/invitationStatus> ;
    sh:name "invitation status" ;
    sh:description "Output only. Invitation status of the user." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "DECLINED" "EXPIRED" ) ;
  ] .

# Shape for Customer User Access Invitation Review
googleads:CustomerUserAccessInvitationReviewShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerUserAccessInvitationReview ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessInvitationReview/newCustomerUserAccessInvitation> ;
    sh:name "new customer user access invitation" ;
    sh:description "Output only. The new CustomerUserAccessInvitation details. Only fields that need to be reviewed are populated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomerUserAccessInvitationShape ;
    sh:class googleads:CustomerUserAccessInvitation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer User Access Review
googleads:CustomerUserAccessReviewShape a sh:NodeShape ;
  sh:targetClass googleads:CustomerUserAccessReview ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessReview/oldCustomerUserAccess> ;
    sh:name "old customer user access" ;
    sh:description "Output only. The resource name of the CustomerUserAccess being changed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomerUserAccessReview/newCustomerUserAccess> ;
    sh:name "new customer user access" ;
    sh:description "Output only. The new CustomerUserAccess details. Only fields that need to be reviewed are populated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomerUserAccessShape ;
    sh:class googleads:CustomerUserAccess ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Interest
googleads:CustomInterestShape a sh:NodeShape ;
  sh:targetClass googleads:CustomInterest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterest/id> ;
    sh:name "id" ;
    sh:description "Output only. Id of the custom interest." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterest/status> ;
    sh:name "status" ;
    sh:description "Status of this custom interest. Indicates whether the custom interest is enabled or removed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterest/name> ;
    sh:name "name" ;
    sh:description "Name of the custom interest. It should be unique across the same custom affinity audience. This field is required for create operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterest/members> ;
    sh:name "members" ;
    sh:description "List of custom interest members that this custom interest is composed of. Members can be added during CustomInterest creation. If members are presented in UPDATE operation, existing members will be overridden." ;
    sh:node googleads:CustomInterestMemberShape ;
    sh:class googleads:CustomInterestMember ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterest/type> ;
    sh:name "type" ;
    sh:description "Type of the custom interest, CUSTOM_AFFINITY or CUSTOM_INTENT. By default the type is set to CUSTOM_AFFINITY." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOM_AFFINITY" "CUSTOM_INTENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterest/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the custom interest. Custom interest resource names have the form: `customers/{customer_id}/customInterests/{custom_interest_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterest/description> ;
    sh:name "description" ;
    sh:description "Description of this custom interest audience." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Interest Member
googleads:CustomInterestMemberShape a sh:NodeShape ;
  sh:targetClass googleads:CustomInterestMember ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterestMember/parameter> ;
    sh:name "parameter" ;
    sh:description "Keyword text when member_type is KEYWORD or URL string when member_type is URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomInterestMember/memberType> ;
    sh:name "member type" ;
    sh:description "The type of custom interest member, KEYWORD or URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "URL" ) ;
  ] .

# Shape for Customizer Attribute
googleads:CustomizerAttributeShape a sh:NodeShape ;
  sh:targetClass googleads:CustomizerAttribute ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomizerAttribute/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the customizer attribute. Customizer Attribute resource names have the form: `customers/{customer_id}/customizerAttributes/{customizer_attribute_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomizerAttribute/type> ;
    sh:name "type" ;
    sh:description "Immutable. The type of the customizer attribute." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TEXT" "NUMBER" "PRICE" "PERCENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomizerAttribute/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the customizer attribute." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomizerAttribute/name> ;
    sh:name "name" ;
    sh:description "Required. Immutable. Name of the customizer attribute. Required. It must have a minimum length of 1 and maximum length of 40. Name of an enabled customizer attribute must be unique (case insensitive)." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomizerAttribute/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the customizer attribute." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] .

# Shape for Custom Lead Form Submission Field
googleads:CustomLeadFormSubmissionFieldShape a sh:NodeShape ;
  sh:targetClass googleads:CustomLeadFormSubmissionField ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomLeadFormSubmissionField/fieldValue> ;
    sh:name "field value" ;
    sh:description "Output only. Field value for custom question response, maximum number of characters is 70." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.CustomLeadFormSubmissionField/questionText> ;
    sh:name "question text" ;
    sh:description "Output only. Question text for custom question, maximum number of characters is 300." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Data Link
googleads:DataLinkShape a sh:NodeShape ;
  sh:targetClass googleads:DataLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataLink/productLinkId> ;
    sh:name "product link id" ;
    sh:description "Output only. The ID of the link. This field is read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataLink/dataLinkId> ;
    sh:name "data link id" ;
    sh:description "Output only. The ID of the data link. This field is read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataLink/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Resource name of the product data link. DataLink resource names have the form: `customers/{customer_id}/datalinks/{product_link_id}~{data_link_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataLink/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the data." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "VIDEO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataLink/youtubeLinkMetadata> ;
    sh:name "youtube link metadata" ;
    sh:description "Immutable. Metadata for a YouTube link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YoutubeLinkMetadataShape ;
    sh:class googleads:YoutubeLinkMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataLink/youtubeVideo> ;
    sh:name "youtube video" ;
    sh:description "Immutable. A data link to YouTube video." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YoutubeVideoIdentifierShape ;
    sh:class googleads:YoutubeVideoIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataLink/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the data link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REQUESTED" "PENDING_APPROVAL" "ENABLED" "DISABLED" "REVOKED" "REJECTED" ) ;
  ] .

# Shape for Youtube Link Metadata
googleads:YoutubeLinkMetadataShape a sh:NodeShape ;
  sh:targetClass googleads:YoutubeLinkMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YoutubeLinkMetadata/brandChannelId> ;
    sh:name "brand channel id" ;
    sh:description "Immutable. The ID of a YouTube brand channel to help creators understand your brand. The channel must be linked to this account. This is a string value with “UC” prefix. For example, \"UCK8sQmJBp8GCxrOtXWBpyEA\"." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Youtube Video Identifier
googleads:YoutubeVideoIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:YoutubeVideoIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YoutubeVideoIdentifier/channelId> ;
    sh:name "channel id" ;
    sh:description "Immutable. The ID of the hosting channel of the video. This is a string value with “UC” prefix. For example, \"UCK8sQmJBp8GCxrOtXWBpyEA\"." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YoutubeVideoIdentifier/videoId> ;
    sh:name "video id" ;
    sh:description "Immutable. The ID of the video associated with the video link. This is the 11 character string value used in the YouTube video URL. For example, video ID is jV1vkHv4zq8 from the YouTube video URL \"https://www.youtube.com/watch?v=jV1vkHv4zq8&t=2s\"." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Data Partner Identifier
googleads:DataPartnerIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:DataPartnerIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DataPartnerIdentifier/dataPartnerId> ;
    sh:name "data partner id" ;
    sh:description "Immutable. The customer ID of the Data partner account. This field is required and should not be empty when creating a new data partner link. It is unable to be modified after the creation of the link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Date Range
googleads:DateRangeShape a sh:NodeShape ;
  sh:targetClass googleads:DateRange ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DateRange/startDate> ;
    sh:name "start date" ;
    sh:description "The start date, in yyyy-mm-dd format. This date is inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DateRange/endDate> ;
    sh:name "end date" ;
    sh:description "The end date, in yyyy-mm-dd format. This date is inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Detail Content Suitability Placement View
googleads:DetailContentSuitabilityPlacementViewShape a sh:NodeShape ;
  sh:targetClass googleads:DetailContentSuitabilityPlacementView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailContentSuitabilityPlacementView/placementType> ;
    sh:name "placement type" ;
    sh:description "Output only. Represents the type of the placement, for example, Website, YouTubeVideo and MobileApplication." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "GOOGLE_PRODUCTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailContentSuitabilityPlacementView/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. The display name is URL for websites, YouTube video name for YouTube videos, and translated mobile app name for mobile apps." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailContentSuitabilityPlacementView/placement> ;
    sh:name "placement" ;
    sh:description "Output only. The automatic placement string at detail level, for example. website url, mobile application id, or a YouTube video id." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailContentSuitabilityPlacementView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the detail content suitability placement view. Detail content suitability placement view resource names have the form: `customers/{customer_id}/detailContentSuitabilityPlacementViews/{placement_fingerprint}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailContentSuitabilityPlacementView/targetUrl> ;
    sh:name "target url" ;
    sh:description "Output only. URL of the placement, for example, website, link to the mobile application in app store, or a YouTube video URL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Detailed Demographic
googleads:DetailedDemographicShape a sh:NodeShape ;
  sh:targetClass googleads:DetailedDemographic ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailedDemographic/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the detailed demographic. Detailed demographic resource names have the form: `customers/{customer_id}/detailedDemographics/{detailed_demographic_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailedDemographic/availabilities> ;
    sh:name "availabilities" ;
    sh:description "Output only. Availability information of the detailed demographic." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CriterionCategoryAvailabilityShape ;
    sh:class googleads:CriterionCategoryAvailability ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailedDemographic/parent> ;
    sh:name "parent" ;
    sh:description "Output only. The parent of the detailed_demographic." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailedDemographic/launchedToAll> ;
    sh:name "launched to all" ;
    sh:description "Output only. True if the detailed demographic is launched to all channels and locales." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailedDemographic/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the detailed demographic." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailedDemographic/name> ;
    sh:name "name" ;
    sh:description "Output only. The name of the detailed demographic. For example,\"Highest Level of Educational Attainment\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Detail Placement View
googleads:DetailPlacementViewShape a sh:NodeShape ;
  sh:targetClass googleads:DetailPlacementView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailPlacementView/placementType> ;
    sh:name "placement type" ;
    sh:description "Output only. Type of the placement, for example, Website, YouTube Video, and Mobile Application." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "GOOGLE_PRODUCTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailPlacementView/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. The display name is URL name for websites, YouTube video name for YouTube videos, and translated mobile app name for mobile apps." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailPlacementView/groupPlacementTargetUrl> ;
    sh:name "group placement target url" ;
    sh:description "Output only. URL of the group placement, for example, domain, link to the mobile application in app store, or a YouTube channel URL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailPlacementView/placement> ;
    sh:name "placement" ;
    sh:description "Output only. The automatic placement string at detail level, e. g. website URL, mobile application ID, or a YouTube video ID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailPlacementView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the detail placement view. Detail placement view resource names have the form: `customers/{customer_id}/detailPlacementViews/{ad_group_id}~{base64_placement}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DetailPlacementView/targetUrl> ;
    sh:name "target url" ;
    sh:description "Output only. URL of the placement, for example, website, link to the mobile application in app store, or a YouTube video URL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Display Keyword View
googleads:DisplayKeywordViewShape a sh:NodeShape ;
  sh:targetClass googleads:DisplayKeywordView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DisplayKeywordView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the display keyword view. Display Keyword view resource names have the form: `customers/{customer_id}/displayKeywordViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Distance View
googleads:DistanceViewShape a sh:NodeShape ;
  sh:targetClass googleads:DistanceView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DistanceView/distanceBucket> ;
    sh:name "distance bucket" ;
    sh:description "Output only. Grouping of user distance from location extensions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WITHIN_700M" "WITHIN_1KM" "WITHIN_5KM" "WITHIN_10KM" "WITHIN_15KM" "WITHIN_20KM" "WITHIN_25KM" "WITHIN_30KM" "WITHIN_35KM" "WITHIN_40KM" "WITHIN_45KM" "WITHIN_50KM" "WITHIN_55KM" "WITHIN_60KM" "WITHIN_65KM" "BEYOND_65KM" "WITHIN_0_7MILES" "WITHIN_1MILE" "WITHIN_5MILES" "WITHIN_10MILES" "WITHIN_15MILES" "WITHIN_20MILES" "WITHIN_25MILES" "WITHIN_30MILES" "WITHIN_35MILES" "WITHIN_40MILES" "BEYOND_40MILES" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DistanceView/metricSystem> ;
    sh:name "metric system" ;
    sh:description "Output only. True if the DistanceBucket is using the metric system, false otherwise." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DistanceView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the distance view. Distance view resource names have the form: `customers/{customer_id}/distanceViews/1~{distance_bucket}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Domain Category
googleads:DomainCategoryShape a sh:NodeShape ;
  sh:targetClass googleads:DomainCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the domain category. Domain category resource names have the form: `customers/{customer_id}/domainCategories/{campaign_id}~{category_base64}~{language_code}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/languageCode> ;
    sh:name "language code" ;
    sh:description "Output only. The language code specifying the language of the website, for example, \"en\" for English. The language can be specified in the DynamicSearchAdsSetting required for dynamic search ads. This is the language of the pages from your website that you want Google Ads to find, create ads for, and match searches with." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The campaign this category is recommended for." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/hasChildren> ;
    sh:name "has children" ;
    sh:description "Output only. Indicates whether this category has sub-categories." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/coverageFraction> ;
    sh:name "coverage fraction" ;
    sh:description "Output only. Fraction of pages on your site that this category matches." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/categoryRank> ;
    sh:name "category rank" ;
    sh:description "Output only. The position of this category in the set of categories. Lower numbers indicate a better match for the domain. null indicates not recommended." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/category> ;
    sh:name "category" ;
    sh:description "Output only. Recommended category for the website domain, for example, if you have a website about electronics, the categories could be \"cameras\", \"televisions\", etc." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/domain> ;
    sh:name "domain" ;
    sh:description "Output only. The domain for the website. The domain can be specified in the DynamicSearchAdsSetting required for dynamic search ads." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DomainCategory/recommendedCpcBidMicros> ;
    sh:name "recommended cpc bid micros" ;
    sh:description "Output only. The recommended cost per click for the category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Dynamic Search Ads Search Term View
googleads:DynamicSearchAdsSearchTermViewShape a sh:NodeShape ;
  sh:targetClass googleads:DynamicSearchAdsSearchTermView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/landingPage> ;
    sh:name "landing page" ;
    sh:description "Output only. The dynamically selected landing page URL of the impression. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the dynamic search ads search term view. Dynamic search ads search term view resource names have the form: `customers/{customer_id}/dynamicSearchAdsSearchTermViews/{ad_group_id}~{search_term_fingerprint}~{headline_fingerprint}~{landing_page_fingerprint}~{page_url_fingerprint}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/searchTerm> ;
    sh:name "search term" ;
    sh:description "Output only. Search term This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/headline> ;
    sh:name "headline" ;
    sh:description "Output only. The dynamically generated headline of the Dynamic Search Ad. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/pageUrl> ;
    sh:name "page url" ;
    sh:description "Output only. The URL of page feed item served for the impression. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/hasMatchingKeyword> ;
    sh:name "has matching keyword" ;
    sh:description "Output only. True if query is added to targeted keywords. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/hasNegativeUrl> ;
    sh:name "has negative url" ;
    sh:description "Output only. True if query matches a negative url. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.DynamicSearchAdsSearchTermView/hasNegativeKeyword> ;
    sh:name "has negative keyword" ;
    sh:description "Output only. True if query matches a negative keyword. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Expanded Landing Page View
googleads:ExpandedLandingPageViewShape a sh:NodeShape ;
  sh:targetClass googleads:ExpandedLandingPageView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedLandingPageView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the expanded landing page view. Expanded landing page view resource names have the form: `customers/{customer_id}/expandedLandingPageViews/{expanded_final_url_fingerprint}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExpandedLandingPageView/expandedFinalUrl> ;
    sh:name "expanded final url" ;
    sh:description "Output only. The final URL that clicks are directed to." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Experiment
googleads:ExperimentShape a sh:NodeShape ;
  sh:targetClass googleads:Experiment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/longRunningOperation> ;
    sh:name "long running operation" ;
    sh:description "Output only. The resource name of the long-running operation that can be used to poll for completion of experiment schedule or promote. The most recent long running operation is returned." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/name> ;
    sh:name "name" ;
    sh:description "Required. The name of the experiment. It must have a minimum length of 1 and maximum length of 1024. It must be unique under a customer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/endDate> ;
    sh:name "end date" ;
    sh:description "Date when the experiment ends. By default, the experiment ends on the campaign's end date. If this field is set, then the experiment ends at the end of the specified date in the customer's time zone. Format: YYYY-MM-DD Example: 2019-04-18" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/promoteStatus> ;
    sh:name "promote status" ;
    sh:description "Output only. The status of the experiment promotion process." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOT_STARTED" "IN_PROGRESS" "COMPLETED" "FAILED" "COMPLETED_WITH_WARNING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/syncEnabled> ;
    sh:name "sync enabled" ;
    sh:description "Immutable. Set to true if changes to base campaigns should be synced to the trial campaigns. Any changes made directly to trial campaigns will be preserved. This field can only be set when the experiment is being created." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/status> ;
    sh:name "status" ;
    sh:description "The Advertiser-chosen status of this experiment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "HALTED" "PROMOTED" "SETUP" "INITIATED" "GRADUATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/experimentId> ;
    sh:name "experiment id" ;
    sh:description "Output only. The ID of the experiment. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/startDate> ;
    sh:name "start date" ;
    sh:description "Date when the experiment starts. By default, the experiment starts now or on the campaign's start date, whichever is later. If this field is set, then the experiment starts at the beginning of the specified date in the customer's time zone. Format: YYYY-MM-DD Example: 2019-03-14" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/type> ;
    sh:name "type" ;
    sh:description "Required. The product/feature that uses this experiment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DISPLAY_AND_VIDEO_360" "AD_VARIATION" "YOUTUBE_CUSTOM" "DISPLAY_CUSTOM" "SEARCH_CUSTOM" "DISPLAY_AUTOMATED_BIDDING_STRATEGY" "SEARCH_AUTOMATED_BIDDING_STRATEGY" "SHOPPING_AUTOMATED_BIDDING_STRATEGY" "SMART_MATCHING" "HOTEL_CUSTOM" "OPTIMIZE_ASSETS" "ADOPT_AI_MAX" "ADOPT_BROAD_MATCH_KEYWORDS" "PMAX_REPLACEMENT_SHOPPING" "COMPARE_CAMPAIGNS" "PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/description> ;
    sh:name "description" ;
    sh:description "The description of the experiment. It must have a minimum length of 1 and maximum length of 2048." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/suffix> ;
    sh:name "suffix" ;
    sh:description "For system managed experiments, the advertiser must provide a suffix during construction, in the setup stage before moving to initiated. The suffix will be appended to the in-design and experiment campaign names so that the name is base campaign name + suffix." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/goals> ;
    sh:name "goals" ;
    sh:description "The goals of this experiment." ;
    sh:node googleads:MetricGoalShape ;
    sh:class googleads:MetricGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/optimizeAssetsExperiment> ;
    sh:name "optimize assets experiment" ;
    sh:description "Immutable. Details of the optimize assets experiment. Applies for experiment types: OPTIMIZE_ASSETS." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:OptimizeAssetsExperimentInfoShape ;
    sh:class googleads:OptimizeAssetsExperimentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the experiment. Experiment resource names have the form: `customers/{customer_id}/experiments/{experiment_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Experiment/videoExperiment> ;
    sh:name "video experiment" ;
    sh:description "Immutable. Details of the video experiment. Applies for experiment types: YOUTUBE_CUSTOM." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:VideoExperimentInfoShape ;
    sh:class googleads:VideoExperimentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Metric Goal
googleads:MetricGoalShape a sh:NodeShape ;
  sh:targetClass googleads:MetricGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MetricGoal/metric> ;
    sh:name "metric" ;
    sh:description "The metric of the goal. For example, clicks, impressions, cost, conversions, etc." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CLICKS" "IMPRESSIONS" "COST" "CONVERSIONS_PER_INTERACTION_RATE" "COST_PER_CONVERSION" "CONVERSIONS_VALUE_PER_COST" "AVERAGE_CPC" "CTR" "INCREMENTAL_CONVERSIONS" "COMPLETED_VIDEO_VIEWS" "CUSTOM_ALGORITHMS" "CONVERSIONS" "CONVERSION_VALUE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MetricGoal/direction> ;
    sh:name "direction" ;
    sh:description "The metric direction of the goal. For example, increase, decrease, no change." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NO_CHANGE" "INCREASE" "DECREASE" "NO_CHANGE_OR_INCREASE" "NO_CHANGE_OR_DECREASE" ) ;
  ] .

# Shape for Optimize Assets Experiment Info
googleads:OptimizeAssetsExperimentInfoShape a sh:NodeShape ;
  sh:targetClass googleads:OptimizeAssetsExperimentInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OptimizeAssetsExperimentInfo/optimizeAssetsExperimentSubtype> ;
    sh:name "optimize assets experiment subtype" ;
    sh:description "The subtype of the Optimize Assets experiment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADD_ASSETS_TO_ASSETLESS_RETAIL" "ADD_VIDEO_ASSETS_TO_VIDEOLESS" "COMPARE_ASSETS" ) ;
  ] .

# Shape for Video Experiment Info
googleads:VideoExperimentInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VideoExperimentInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoExperimentInfo/videoExperimentSubtype> ;
    sh:name "video experiment subtype" ;
    sh:description "The subtype of the Video experiment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEMAND_GEN_ASSET" "ASSET" "ASSET_UPLIFT" ) ;
  ] .

# Shape for Experiment Arm
googleads:ExperimentArmShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/campaigns> ;
    sh:name "campaigns" ;
    sh:description "List of campaigns in the trial arm. The max length is one." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/inDesignCampaigns> ;
    sh:name "in design campaigns" ;
    sh:description "Output only. The in design campaigns in the treatment experiment arm." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the experiment arm. Experiment arm resource names have the form: `customers/{customer_id}/experimentArms/{TrialArm.trial_id}~{TrialArm.trial_arm_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/assetTestingInfo> ;
    sh:name "asset testing info" ;
    sh:description "Details of assets under experiment." ;
    sh:node googleads:ExperimentArmAssetTestingInfoShape ;
    sh:class googleads:ExperimentArmAssetTestingInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/control> ;
    sh:name "control" ;
    sh:description "Whether this arm is a control arm. A control arm is the arm against which the other arms are compared." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/trafficSplit> ;
    sh:name "traffic split" ;
    sh:description "Traffic split of the trial arm. The value should be between 1 and 100 and must total 100 between the two trial arms." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/assetGroups> ;
    sh:name "asset groups" ;
    sh:description "List of asset groups in the experiment arm. The max length is one. In the Optimize Assets experiment construction, the control arm and treatment arm should both contain the same asset group ID." ;
    sh:node googleads:ExperimentArmAssetGroupInfoShape ;
    sh:class googleads:ExperimentArmAssetGroupInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/performanceMaxExperimentArmInfo> ;
    sh:name "performance max experiment arm info" ;
    sh:description "Immutable. Information specific to the control or treatment campaign of a Performance Max experiment. This field is specific to experiments of type PMAX_REPLACEMENT_SHOPPING. For example, the treatment experiment arm contains the information of treatment Performance Max campaign settings for PMAX_REPLACEMENT_SHOPPING experiments." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ExperimentArmPerformanceMaxExperimentArmInfoShape ;
    sh:class googleads:ExperimentArmPerformanceMaxExperimentArmInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/experiment> ;
    sh:name "experiment" ;
    sh:description "Immutable. The experiment to which the ExperimentArm belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArm/name> ;
    sh:name "name" ;
    sh:description "Required. The name of the experiment arm. It must have a minimum length of 1 and maximum length of 1024. It must be unique under an experiment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Experiment Arm Asset Testing Info
googleads:ExperimentArmAssetTestingInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArmAssetTestingInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetTestingInfo/assetVariationInfos> ;
    sh:name "asset variation infos" ;
    sh:description "Details of assets associated for each experimental copy of the ad." ;
    sh:node googleads:ExperimentArmAssetVariationInfoShape ;
    sh:class googleads:ExperimentArmAssetVariationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Experiment Arm Asset Variation Info
googleads:ExperimentArmAssetVariationInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArmAssetVariationInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetVariationInfo/assetDetails> ;
    sh:name "asset details" ;
    sh:description "Details for each asset that is being modified from the base ad." ;
    sh:node googleads:ExperimentArmAssetDetailShape ;
    sh:class googleads:ExperimentArmAssetDetail ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetVariationInfo/baseAdGroup> ;
    sh:name "base ad group" ;
    sh:description "Associated base AdGroup resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetVariationInfo/baseAd> ;
    sh:name "base ad" ;
    sh:description "Associated base ad resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Experiment Arm Asset Detail
googleads:ExperimentArmAssetDetailShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArmAssetDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetDetail/asset> ;
    sh:name "asset" ;
    sh:description "The asset that is being modified for the experiment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetDetail/fieldType> ;
    sh:name "field type" ;
    sh:description "Field type for the asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetDetail/assetDetailOperation> ;
    sh:name "asset detail operation" ;
    sh:description "Enum to specify whether the asset is removed or added from the base ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADD" "REMOVE" ) ;
  ] .

# Shape for Experiment Arm Asset Group Info
googleads:ExperimentArmAssetGroupInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArmAssetGroupInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetGroupInfo/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Asset group resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetGroupInfo/assetGroupAssets> ;
    sh:name "asset group assets" ;
    sh:description "List of asset group assets under the asset group." ;
    sh:node googleads:ExperimentArmAssetGroupAssetInfoShape ;
    sh:class googleads:ExperimentArmAssetGroupAssetInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Experiment Arm Asset Group Asset Info
googleads:ExperimentArmAssetGroupAssetInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArmAssetGroupAssetInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetGroupAssetInfo/fieldType> ;
    sh:name "field type" ;
    sh:description "Field type of the asset group asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmAssetGroupAssetInfo/asset> ;
    sh:name "asset" ;
    sh:description "Asset resource name of the asset group asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Experiment Arm Performance Max Experiment Arm Info
googleads:ExperimentArmPerformanceMaxExperimentArmInfoShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArmPerformanceMaxExperimentArmInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmPerformanceMaxExperimentArmInfo/experimentalPerformanceMaxCampaignSettings> ;
    sh:name "experimental performance max campaign settings" ;
    sh:description "Immutable. Performance Max campaign settings to be applied on the Google-created experimental campaign in a Performance Max experiment. The experimental campaign is automatically created by Google upon experiment creation." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:ExperimentArmExperimentalPerformanceMaxCampaignSettingsShape ;
    sh:class googleads:ExperimentArmExperimentalPerformanceMaxCampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Experiment Arm Experimental Performance Max Campaign Settings
googleads:ExperimentArmExperimentalPerformanceMaxCampaignSettingsShape a sh:NodeShape ;
  sh:targetClass googleads:ExperimentArmExperimentalPerformanceMaxCampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmExperimentalPerformanceMaxCampaignSettings/budgetAmountMicros> ;
    sh:name "budget amount micros" ;
    sh:description "Immutable. The amount of budget of the Performance Max experiment campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmExperimentalPerformanceMaxCampaignSettings/targetRoas> ;
    sh:name "target roas" ;
    sh:description "Immutable. Target ROAS of the Performance Max experiment campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmExperimentalPerformanceMaxCampaignSettings/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "Immutable. Target CPA of the Performance Max experiment campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ExperimentArmExperimentalPerformanceMaxCampaignSettings/biddingStrategyType> ;
    sh:name "bidding strategy type" ;
    sh:description "Immutable. Bidding strategy type of the Performance Max experiment campaign." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "COMMISSION" "ENHANCED_CPC" "FIXED_CPM" "FIXED_SHARE_OF_VOICE" "INVALID" "MANUAL_CPA" "MANUAL_CPC" "MANUAL_CPM" "MANUAL_CPV" "MAXIMIZE_CONVERSIONS" "MAXIMIZE_CONVERSION_VALUE" "PAGE_ONE_PROMOTED" "PERCENT_CPC" "TARGET_CPA" "TARGET_CPC" "TARGET_CPM" "TARGET_CPV" "TARGET_IMPRESSION_SHARE" "TARGET_OUTRANK_SHARE" "TARGET_ROAS" "TARGET_SPEND" ) ;
  ] .

# Shape for Fellowship
googleads:FellowshipShape a sh:NodeShape ;
  sh:targetClass googleads:Fellowship ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Fellowship/institutionName> ;
    sh:name "institution name" ;
    sh:description "Output only. Name of the instutition at which the fellowship was completed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Fellowship/completionYear> ;
    sh:name "completion year" ;
    sh:description "Output only. Year of completion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Final Url Expansion Asset View
googleads:FinalUrlExpansionAssetViewShape a sh:NodeShape ;
  sh:targetClass googleads:FinalUrlExpansionAssetView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. Campaign in which the asset served." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/status> ;
    sh:name "status" ;
    sh:description "Output only. Status of the FinalUrlExpansionAsset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" "PAUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/finalUrl> ;
    sh:name "final url" ;
    sh:description "Output only. Final URL of the FinalUrlExpansionAsset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Output only. Asset Group in which FinalUrlExpansionAsset served." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/asset> ;
    sh:name "asset" ;
    sh:description "Output only. The ID of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. Ad Group in which FinalUrlExpansionAsset served." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the FinalUrlExpansionAsset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FinalUrlExpansionAssetView/fieldType> ;
    sh:name "field type" ;
    sh:description "Output only. The field type of the asset." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HEADLINE" "DESCRIPTION" "MANDATORY_AD_TEXT" "MARKETING_IMAGE" "MEDIA_BUNDLE" "YOUTUBE_VIDEO" "BOOK_ON_GOOGLE" "LEAD_FORM" "PROMOTION" "CALLOUT" "STRUCTURED_SNIPPET" "SITELINK" "MOBILE_APP" "HOTEL_CALLOUT" "CALL" "PRICE" "LONG_HEADLINE" "BUSINESS_NAME" "SQUARE_MARKETING_IMAGE" "PORTRAIT_MARKETING_IMAGE" "LOGO" "LANDSCAPE_LOGO" "VIDEO" "CALL_TO_ACTION_SELECTION" "AD_IMAGE" "BUSINESS_LOGO" "HOTEL_PROPERTY" "DEMAND_GEN_CAROUSEL_CARD" "BUSINESS_MESSAGE" "TALL_PORTRAIT_MARKETING_IMAGE" "RELATED_YOUTUBE_VIDEOS" "LANDING_PAGE_PREVIEW" "LONG_DESCRIPTION" "CALL_TO_ACTION" "CLASSIC_DISPLAY_IMAGE" ) ;
  ] .

# Shape for Flexible Rule Operand Info
googleads:FlexibleRuleOperandInfoShape a sh:NodeShape ;
  sh:targetClass googleads:FlexibleRuleOperandInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FlexibleRuleOperandInfo/lookbackWindowDays> ;
    sh:name "lookback window days" ;
    sh:description "Lookback window for this rule in days. From now until X days ago." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FlexibleRuleOperandInfo/rule> ;
    sh:name "rule" ;
    sh:description "List of rule item groups that defines this rule. Rule item groups are grouped together." ;
    sh:node googleads:UserListRuleInfoShape ;
    sh:class googleads:UserListRuleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for User List Rule Info
googleads:UserListRuleInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListRuleInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListRuleInfo/ruleItemGroups> ;
    sh:name "rule item groups" ;
    sh:description "List of rule item groups that defines this rule. Rule item groups are grouped together based on rule_type." ;
    sh:node googleads:UserListRuleItemGroupInfoShape ;
    sh:class googleads:UserListRuleItemGroupInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListRuleInfo/ruleType> ;
    sh:name "rule type" ;
    sh:description "Rule type is used to determine how to group rule items. The default is OR of ANDs (disjunctive normal form). That is, rule items will be ANDed together within rule item groups and the groups themselves will be ORed together. OR of ANDs is the only supported type for FlexibleRuleUserList." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AND_OF_ORS" "OR_OF_ANDS" ) ;
  ] .

# Shape for User List Rule Item Group Info
googleads:UserListRuleItemGroupInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListRuleItemGroupInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListRuleItemGroupInfo/ruleItems> ;
    sh:name "rule items" ;
    sh:description "Rule items that will be grouped together based on rule_type." ;
    sh:node googleads:UserListRuleItemInfoShape ;
    sh:class googleads:UserListRuleItemInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for User List Rule Item Info
googleads:UserListRuleItemInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListRuleItemInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListRuleItemInfo/name> ;
    sh:name "name" ;
    sh:description "Rule variable name. It should match the corresponding key name fired by the pixel. A name must begin with US-ascii letters or underscore or UTF8 code that is greater than 127 and consist of US-ascii letters or digits or underscore or UTF8 code that is greater than 127. For websites, there are two built-in variable URL (name = 'url__') and referrer URL (name = 'ref_url__'). This field must be populated when creating a new rule item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListRuleItemInfo/numberRuleItem> ;
    sh:name "number rule item" ;
    sh:description "An atomic rule item composed of a number operation." ;
    sh:node googleads:UserListNumberRuleItemInfoShape ;
    sh:class googleads:UserListNumberRuleItemInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListRuleItemInfo/dateRuleItem> ;
    sh:name "date rule item" ;
    sh:description "An atomic rule item composed of a date operation." ;
    sh:node googleads:UserListDateRuleItemInfoShape ;
    sh:class googleads:UserListDateRuleItemInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListRuleItemInfo/stringRuleItem> ;
    sh:name "string rule item" ;
    sh:description "An atomic rule item composed of a string operation." ;
    sh:node googleads:UserListStringRuleItemInfoShape ;
    sh:class googleads:UserListStringRuleItemInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for User List Number Rule Item Info
googleads:UserListNumberRuleItemInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListNumberRuleItemInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListNumberRuleItemInfo/operator> ;
    sh:name "operator" ;
    sh:description "Number comparison operator. This field is required and must be populated when creating a new number rule item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GREATER_THAN" "GREATER_THAN_OR_EQUAL" "EQUALS" "NOT_EQUALS" "LESS_THAN" "LESS_THAN_OR_EQUAL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListNumberRuleItemInfo/value> ;
    sh:name "value" ;
    sh:description "Number value to be compared with the variable. This field is required and must be populated when creating a new number rule item." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for User List Date Rule Item Info
googleads:UserListDateRuleItemInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListDateRuleItemInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListDateRuleItemInfo/value> ;
    sh:name "value" ;
    sh:description "String representing date value to be compared with the rule variable. Supported date format is YYYY-MM-DD. Times are reported in the customer's time zone." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListDateRuleItemInfo/offsetInDays> ;
    sh:name "offset in days" ;
    sh:description "The relative date value of the right hand side denoted by number of days offset from now. The value field will override this field when both are present." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListDateRuleItemInfo/operator> ;
    sh:name "operator" ;
    sh:description "Date comparison operator. This field is required and must be populated when creating new date rule item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EQUALS" "NOT_EQUALS" "BEFORE" "AFTER" ) ;
  ] .

# Shape for User List String Rule Item Info
googleads:UserListStringRuleItemInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListStringRuleItemInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListStringRuleItemInfo/operator> ;
    sh:name "operator" ;
    sh:description "String comparison operator. This field is required and must be populated when creating a new string rule item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CONTAINS" "EQUALS" "STARTS_WITH" "ENDS_WITH" "NOT_EQUALS" "NOT_CONTAINS" "NOT_STARTS_WITH" "NOT_ENDS_WITH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListStringRuleItemInfo/value> ;
    sh:name "value" ;
    sh:description "The right hand side of the string rule item. For URLs or referrer URLs, the value can not contain illegal URL chars such as newlines, quotes, tabs, or parentheses. This field is required and must be populated when creating a new string rule item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Flexible Rule User List Info
googleads:FlexibleRuleUserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:FlexibleRuleUserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FlexibleRuleUserListInfo/inclusiveRuleOperator> ;
    sh:name "inclusive rule operator" ;
    sh:description "Operator that defines how the inclusive operands are combined." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AND" "OR" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FlexibleRuleUserListInfo/inclusiveOperands> ;
    sh:name "inclusive operands" ;
    sh:description "Rules representing users that should be included in the user list. These are located on the left side of the AND_NOT operator, and joined together by either AND/OR as specified by the inclusive_rule_operator." ;
    sh:node googleads:FlexibleRuleOperandInfoShape ;
    sh:class googleads:FlexibleRuleOperandInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.FlexibleRuleUserListInfo/exclusiveOperands> ;
    sh:name "exclusive operands" ;
    sh:description "Rules representing users that should be excluded from the user list. These are located on the right side of the AND_NOT operator, and joined together by OR." ;
    sh:node googleads:FlexibleRuleOperandInfoShape ;
    sh:class googleads:FlexibleRuleOperandInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Gender View
googleads:GenderViewShape a sh:NodeShape ;
  sh:targetClass googleads:GenderView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GenderView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the gender view. Gender view resource names have the form: `customers/{customer_id}/genderViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Geographic View
googleads:GeographicViewShape a sh:NodeShape ;
  sh:targetClass googleads:GeographicView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeographicView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the geographic view. Geographic view resource names have the form: `customers/{customer_id}/geographicViews/{country_criterion_id}~{location_type}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeographicView/locationType> ;
    sh:name "location type" ;
    sh:description "Output only. Type of the geo targeting of the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AREA_OF_INTEREST" "LOCATION_OF_PRESENCE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeographicView/countryCriterionId> ;
    sh:name "country criterion id" ;
    sh:description "Output only. Criterion Id for the country." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Geo Target Constant
googleads:GeoTargetConstantShape a sh:NodeShape ;
  sh:targetClass googleads:GeoTargetConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/targetType> ;
    sh:name "target type" ;
    sh:description "Output only. Geo target constant target type." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/parentGeoTarget> ;
    sh:name "parent geo target" ;
    sh:description "Output only. The resource name of the parent geo target constant. Geo target constant resource names have the form: `geoTargetConstants/{parent_geo_target_constant_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the geo target constant. Geo target constant resource names have the form: `geoTargetConstants/{geo_target_constant_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/countryCode> ;
    sh:name "country code" ;
    sh:description "Output only. The ISO-3166-1 alpha-2 country code that is associated with the target." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/canonicalName> ;
    sh:name "canonical name" ;
    sh:description "Output only. The fully qualified English name, consisting of the target's name and that of its parent and country." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the geo target constant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/name> ;
    sh:name "name" ;
    sh:description "Output only. Geo target constant English name." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GeoTargetConstant/status> ;
    sh:name "status" ;
    sh:description "Output only. Geo target constant status." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVAL_PLANNED" ) ;
  ] .

# Shape for Goal
googleads:GoalShape a sh:NodeShape ;
  sh:targetClass googleads:Goal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Goal/ownerCustomer> ;
    sh:name "owner customer" ;
    sh:description "Output only. The resource name of the goal owner customer." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Goal/goalType> ;
    sh:name "goal type" ;
    sh:description "Output only. The type of this goal." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER_RETENTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Goal/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the goal. Goal resource names have the form: `customers/{customer_id}/goals/{goal_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Goal/retentionGoalSettings> ;
    sh:name "retention goal settings" ;
    sh:description "Retention goal settings." ;
    sh:node googleads:GoalSettingRetentionGoalShape ;
    sh:class googleads:GoalSettingRetentionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Goal/goalId> ;
    sh:name "goal id" ;
    sh:description "Output only. The ID of this goal." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Goal/optimizationEligibility> ;
    sh:name "optimization eligibility" ;
    sh:description "Output only. Indicates if this goal is eligible for campaign optimization." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ELIGIBLE" "INELIGIBLE" ) ;
  ] .

# Shape for Goal Setting Retention Goal
googleads:GoalSettingRetentionGoalShape a sh:NodeShape ;
  sh:targetClass googleads:GoalSettingRetentionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoalSettingRetentionGoal/valueSettings> ;
    sh:name "value settings" ;
    sh:description "Retention goal value settings." ;
    sh:node googleads:CustomerLifecycleOptimizationValueSettingsShape ;
    sh:class googleads:CustomerLifecycleOptimizationValueSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Ads Identifier
googleads:GoogleAdsIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:GoogleAdsIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsIdentifier/customer> ;
    sh:name "customer" ;
    sh:description "Immutable. The resource name of the Google Ads account. This field is required and should not be empty when creating a new Google Ads link. It is unable to be modified after the creation of the link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Ads Row
googleads:GoogleAdsRowShape a sh:NodeShape ;
  sh:targetClass googleads:GoogleAdsRow ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/keywordPlan> ;
    sh:name "keyword plan" ;
    sh:description "The keyword plan referenced in the query." ;
    sh:node googleads:KeywordPlanShape ;
    sh:class googleads:KeywordPlan ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/audience> ;
    sh:name "audience" ;
    sh:description "The Audience referenced in the query." ;
    sh:node googleads:AudienceShape ;
    sh:class googleads:Audience ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/video> ;
    sh:name "video" ;
    sh:description "The video referenced in the query." ;
    sh:node googleads:VideoShape ;
    sh:class googleads:Video ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/languageConstant> ;
    sh:name "language constant" ;
    sh:description "The language constant referenced in the query." ;
    sh:node googleads:LanguageConstantShape ;
    sh:class googleads:LanguageConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "The criterion referenced in the query." ;
    sh:node googleads:AdGroupCriterionShape ;
    sh:class googleads:AdGroupCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/groupPlacementView> ;
    sh:name "group placement view" ;
    sh:description "The group placement view referenced in the query." ;
    sh:node googleads:GroupPlacementViewShape ;
    sh:class googleads:GroupPlacementView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/smartCampaignSetting> ;
    sh:name "smart campaign setting" ;
    sh:description "The Smart campaign setting referenced in the query." ;
    sh:node googleads:SmartCampaignSettingShape ;
    sh:class googleads:SmartCampaignSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/userListCustomerType> ;
    sh:name "user list customer type" ;
    sh:description "The user list customer type in the query." ;
    sh:node googleads:UserListCustomerTypeShape ;
    sh:class googleads:UserListCustomerType ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerLifecycleGoal> ;
    sh:name "customer lifecycle goal" ;
    sh:description "The customer lifecycle goal referenced in the query." ;
    sh:node googleads:CustomerLifecycleGoalShape ;
    sh:class googleads:CustomerLifecycleGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/biddingStrategySimulation> ;
    sh:name "bidding strategy simulation" ;
    sh:description "The bidding strategy simulation referenced in the query." ;
    sh:node googleads:BiddingStrategySimulationShape ;
    sh:class googleads:BiddingStrategySimulation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupAsset> ;
    sh:name "ad group asset" ;
    sh:description "The ad group asset referenced in the query." ;
    sh:node googleads:AdGroupAssetShape ;
    sh:class googleads:AdGroupAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/segments> ;
    sh:name "segments" ;
    sh:description "The segments." ;
    sh:node googleads:SegmentsShape ;
    sh:class googleads:Segments ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupCustomizer> ;
    sh:name "ad group customizer" ;
    sh:description "The ad group customizer referenced in the query." ;
    sh:node googleads:AdGroupCustomizerShape ;
    sh:class googleads:AdGroupCustomizer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/androidPrivacySharedKeyGoogleNetworkType> ;
    sh:name "android privacy shared key google network type" ;
    sh:description "The android privacy shared key google network type referenced in the query." ;
    sh:node googleads:AndroidPrivacySharedKeyGoogleNetworkTypeShape ;
    sh:class googleads:AndroidPrivacySharedKeyGoogleNetworkType ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adScheduleView> ;
    sh:name "ad schedule view" ;
    sh:description "The ad schedule view referenced in the query." ;
    sh:node googleads:AdScheduleViewShape ;
    sh:class googleads:AdScheduleView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/goal> ;
    sh:name "goal" ;
    sh:description "The goal in the query." ;
    sh:node googleads:GoalShape ;
    sh:class googleads:Goal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupAdAssetView> ;
    sh:name "ad group ad asset view" ;
    sh:description "The ad group ad asset view in the query." ;
    sh:class googleads:AdGroupAdAssetView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/changeEvent> ;
    sh:name "change event" ;
    sh:description "The ChangeEvent referenced in the query." ;
    sh:node googleads:ChangeEventShape ;
    sh:class googleads:ChangeEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/keywordPlanCampaign> ;
    sh:name "keyword plan campaign" ;
    sh:description "The keyword plan campaign referenced in the query." ;
    sh:node googleads:KeywordPlanCampaignShape ;
    sh:class googleads:KeywordPlanCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/groupContentSuitabilityPlacementView> ;
    sh:name "group content suitability placement view" ;
    sh:description "The group content suitability placement view referenced in the query." ;
    sh:node googleads:GroupContentSuitabilityPlacementViewShape ;
    sh:class googleads:GroupContentSuitabilityPlacementView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/shoppingProduct> ;
    sh:name "shopping product" ;
    sh:description "The shopping product referenced in the query." ;
    sh:node googleads:ShoppingProductShape ;
    sh:class googleads:ShoppingProduct ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/smartCampaignSearchTermView> ;
    sh:name "smart campaign search term view" ;
    sh:description "The Smart campaign search term view referenced in the query." ;
    sh:node googleads:SmartCampaignSearchTermViewShape ;
    sh:class googleads:SmartCampaignSearchTermView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/channelAggregateAssetView> ;
    sh:name "channel aggregate asset view" ;
    sh:description "The channel aggregate asset view referenced in the query." ;
    sh:node googleads:ChannelAggregateAssetViewShape ;
    sh:class googleads:ChannelAggregateAssetView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerConversionGoal> ;
    sh:name "customer conversion goal" ;
    sh:description "The CustomerConversionGoal referenced in the query." ;
    sh:node googleads:CustomerConversionGoalShape ;
    sh:class googleads:CustomerConversionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/dataLink> ;
    sh:name "data link" ;
    sh:description "The data link referenced in the query." ;
    sh:node googleads:DataLinkShape ;
    sh:class googleads:DataLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/offlineConversionUploadConversionActionSummary> ;
    sh:name "offline conversion upload conversion action summary" ;
    sh:description "Offline conversion upload summary at conversion type level." ;
    sh:node googleads:OfflineConversionUploadConversionActionSummaryShape ;
    sh:class googleads:OfflineConversionUploadConversionActionSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/productGroupView> ;
    sh:name "product group view" ;
    sh:description "The product group view referenced in the query." ;
    sh:node googleads:ProductGroupViewShape ;
    sh:class googleads:ProductGroupView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/thirdPartyAppAnalyticsLink> ;
    sh:name "third party app analytics link" ;
    sh:description "The AccountLink referenced in the query." ;
    sh:node googleads:ThirdPartyAppAnalyticsLinkShape ;
    sh:class googleads:ThirdPartyAppAnalyticsLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/domainCategory> ;
    sh:name "domain category" ;
    sh:description "The domain category referenced in the query." ;
    sh:node googleads:DomainCategoryShape ;
    sh:class googleads:DomainCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignCustomizer> ;
    sh:name "campaign customizer" ;
    sh:description "The campaign customizer referenced in the query." ;
    sh:node googleads:CampaignCustomizerShape ;
    sh:class googleads:CampaignCustomizer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customer> ;
    sh:name "customer" ;
    sh:description "The customer referenced in the query." ;
    sh:node googleads:CustomerShape ;
    sh:class googleads:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/locationInterestView> ;
    sh:name "location interest view" ;
    sh:description "The location interest view referenced in the query." ;
    sh:node googleads:LocationInterestViewShape ;
    sh:class googleads:LocationInterestView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/leadFormSubmissionData> ;
    sh:name "lead form submission data" ;
    sh:description "The lead form user submission referenced in the query." ;
    sh:node googleads:LeadFormSubmissionDataShape ;
    sh:class googleads:LeadFormSubmissionData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/ad> ;
    sh:name "ad" ;
    sh:description "The Ad referenced in the query." ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/lifeEvent> ;
    sh:name "life event" ;
    sh:description "The life event referenced in the query." ;
    sh:node googleads:LifeEventShape ;
    sh:class googleads:LifeEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/keywordPlanCampaignKeyword> ;
    sh:name "keyword plan campaign keyword" ;
    sh:description "The keyword plan campaign keyword referenced in the query." ;
    sh:node googleads:KeywordPlanCampaignKeywordShape ;
    sh:class googleads:KeywordPlanCampaignKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetGroupTopCombinationView> ;
    sh:name "asset group top combination view" ;
    sh:description "The asset group top combination view referenced in the query." ;
    sh:node googleads:AssetGroupTopCombinationViewShape ;
    sh:class googleads:AssetGroupTopCombinationView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerNegativeCriterion> ;
    sh:name "customer negative criterion" ;
    sh:description "The customer negative criterion referenced in the query." ;
    sh:node googleads:CustomerNegativeCriterionShape ;
    sh:class googleads:CustomerNegativeCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupAdAssetCombinationView> ;
    sh:name "ad group ad asset combination view" ;
    sh:description "The ad group ad asset combination view in the query." ;
    sh:node googleads:AdGroupAdAssetCombinationViewShape ;
    sh:class googleads:AdGroupAdAssetCombinationView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/userInterest> ;
    sh:name "user interest" ;
    sh:description "The user interest referenced in the query." ;
    sh:node googleads:UserInterestShape ;
    sh:class googleads:UserInterest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/youTubeVideoUpload> ;
    sh:name "you tube video upload" ;
    sh:description "The YouTube video upload referenced in the query." ;
    sh:node googleads:YouTubeVideoUploadShape ;
    sh:class googleads:YouTubeVideoUpload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/productCategoryConstant> ;
    sh:name "product category constant" ;
    sh:description "The product category referenced in the query." ;
    sh:node googleads:ProductCategoryConstantShape ;
    sh:class googleads:ProductCategoryConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/recommendationSubscription> ;
    sh:name "recommendation subscription" ;
    sh:description "The recommendation subscription referenced in the query." ;
    sh:node googleads:RecommendationSubscriptionShape ;
    sh:class googleads:RecommendationSubscription ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetSetAsset> ;
    sh:name "asset set asset" ;
    sh:description "The asset set asset referenced in the query." ;
    sh:node googleads:AssetSetAssetShape ;
    sh:class googleads:AssetSetAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignConversionGoal> ;
    sh:name "campaign conversion goal" ;
    sh:description "The CampaignConversionGoal referenced in the query." ;
    sh:node googleads:CampaignConversionGoalShape ;
    sh:class googleads:CampaignConversionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignAudienceView> ;
    sh:name "campaign audience view" ;
    sh:description "The campaign audience view referenced in the query." ;
    sh:node googleads:CampaignAudienceViewShape ;
    sh:class googleads:CampaignAudienceView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/displayKeywordView> ;
    sh:name "display keyword view" ;
    sh:description "The display keyword view referenced in the query." ;
    sh:node googleads:DisplayKeywordViewShape ;
    sh:class googleads:DisplayKeywordView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/contentCriterionView> ;
    sh:name "content criterion view" ;
    sh:description "The content criterion view referenced in the query." ;
    sh:node googleads:ContentCriterionViewShape ;
    sh:class googleads:ContentCriterionView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/mediaFile> ;
    sh:name "media file" ;
    sh:description "The media file referenced in the query." ;
    sh:node googleads:MediaFileShape ;
    sh:class googleads:MediaFile ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/operatingSystemVersionConstant> ;
    sh:name "operating system version constant" ;
    sh:description "The operating system version constant referenced in the query." ;
    sh:node googleads:OperatingSystemVersionConstantShape ;
    sh:class googleads:OperatingSystemVersionConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaign> ;
    sh:name "campaign" ;
    sh:description "The campaign referenced in the query." ;
    sh:node googleads:CampaignShape ;
    sh:class googleads:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignBidModifier> ;
    sh:name "campaign bid modifier" ;
    sh:description "The campaign bid modifier referenced in the query." ;
    sh:node googleads:CampaignBidModifierShape ;
    sh:class googleads:CampaignBidModifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/conversionCustomVariable> ;
    sh:name "conversion custom variable" ;
    sh:description "The conversion custom variable referenced in the query." ;
    sh:node googleads:ConversionCustomVariableShape ;
    sh:class googleads:ConversionCustomVariable ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/managedPlacementView> ;
    sh:name "managed placement view" ;
    sh:description "The managed placement view referenced in the query." ;
    sh:node googleads:ManagedPlacementViewShape ;
    sh:class googleads:ManagedPlacementView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignGoalConfig> ;
    sh:name "campaign goal config" ;
    sh:description "The campaign goal config referenced in the query." ;
    sh:node googleads:CampaignGoalConfigShape ;
    sh:class googleads:CampaignGoalConfig ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/multiPartyAuthReview> ;
    sh:name "multi party auth review" ;
    sh:description "The multi party auth review referenced in the query." ;
    sh:node googleads:MultiPartyAuthReviewShape ;
    sh:class googleads:MultiPartyAuthReview ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/webpageView> ;
    sh:name "webpage view" ;
    sh:description "The webpage view referenced in the query." ;
    sh:node googleads:WebpageViewShape ;
    sh:class googleads:WebpageView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/keywordPlanAdGroup> ;
    sh:name "keyword plan ad group" ;
    sh:description "The keyword plan ad group referenced in the query." ;
    sh:node googleads:KeywordPlanAdGroupShape ;
    sh:class googleads:KeywordPlanAdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/topicConstant> ;
    sh:name "topic constant" ;
    sh:description "The topic constant referenced in the query." ;
    sh:node googleads:TopicConstantShape ;
    sh:class googleads:TopicConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroup> ;
    sh:name "ad group" ;
    sh:description "The ad group referenced in the query." ;
    sh:node googleads:AdGroupShape ;
    sh:class googleads:AdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignCriterion> ;
    sh:name "campaign criterion" ;
    sh:description "The campaign criterion referenced in the query." ;
    sh:node googleads:CampaignCriterionShape ;
    sh:class googleads:CampaignCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/offlineConversionUploadClientSummary> ;
    sh:name "offline conversion upload client summary" ;
    sh:description "Offline conversion upload summary at customer level." ;
    sh:node googleads:OfflineConversionUploadClientSummaryShape ;
    sh:class googleads:OfflineConversionUploadClientSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/currencyConstant> ;
    sh:name "currency constant" ;
    sh:description "The currency constant referenced in the query." ;
    sh:node googleads:CurrencyConstantShape ;
    sh:class googleads:CurrencyConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetSetTypeView> ;
    sh:name "asset set type view" ;
    sh:description "The asset set type view referenced in the query." ;
    sh:node googleads:AssetSetTypeViewShape ;
    sh:class googleads:AssetSetTypeView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customAudience> ;
    sh:name "custom audience" ;
    sh:description "The CustomAudience referenced in the query." ;
    sh:node googleads:CustomAudienceShape ;
    sh:class googleads:CustomAudience ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerClient> ;
    sh:name "customer client" ;
    sh:description "The CustomerClient referenced in the query." ;
    sh:node googleads:CustomerClientShape ;
    sh:class googleads:CustomerClient ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customizerAttribute> ;
    sh:name "customizer attribute" ;
    sh:description "The customizer attribute referenced in the query." ;
    sh:node googleads:CustomizerAttributeShape ;
    sh:class googleads:CustomizerAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerCustomizer> ;
    sh:name "customer customizer" ;
    sh:description "The customer customizer referenced in the query." ;
    sh:node googleads:CustomerCustomizerShape ;
    sh:class googleads:CustomerCustomizer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/keywordThemeConstant> ;
    sh:name "keyword theme constant" ;
    sh:description "The keyword theme constant referenced in the query." ;
    sh:node googleads:KeywordThemeConstantShape ;
    sh:class googleads:KeywordThemeConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/localServicesLead> ;
    sh:name "local services lead" ;
    sh:description "The local services lead referenced in the query." ;
    sh:node googleads:LocalServicesLeadShape ;
    sh:class googleads:LocalServicesLead ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customInterest> ;
    sh:name "custom interest" ;
    sh:description "The CustomInterest referenced in the query." ;
    sh:node googleads:CustomInterestShape ;
    sh:class googleads:CustomInterest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/productLinkInvitation> ;
    sh:name "product link invitation" ;
    sh:description "The product link invitation in the query." ;
    sh:node googleads:ProductLinkInvitationShape ;
    sh:class googleads:ProductLinkInvitation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupAd> ;
    sh:name "ad group ad" ;
    sh:description "The ad referenced in the query." ;
    sh:class googleads:AdGroupAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/keywordView> ;
    sh:name "keyword view" ;
    sh:description "The keyword view referenced in the query." ;
    sh:node googleads:KeywordViewShape ;
    sh:class googleads:KeywordView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/expandedLandingPageView> ;
    sh:name "expanded landing page view" ;
    sh:description "The expanded landing page view referenced in the query." ;
    sh:node googleads:ExpandedLandingPageViewShape ;
    sh:class googleads:ExpandedLandingPageView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupAssetSet> ;
    sh:name "ad group asset set" ;
    sh:description "The ad group asset set referenced in the query." ;
    sh:node googleads:AdGroupAssetSetShape ;
    sh:class googleads:AdGroupAssetSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/conversionValueRuleSet> ;
    sh:name "conversion value rule set" ;
    sh:description "The conversion value rule set referenced in the query." ;
    sh:node googleads:ConversionValueRuleSetShape ;
    sh:class googleads:ConversionValueRuleSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/genderView> ;
    sh:name "gender view" ;
    sh:description "The gender view referenced in the query." ;
    sh:node googleads:GenderViewShape ;
    sh:class googleads:GenderView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/hotelPerformanceView> ;
    sh:name "hotel performance view" ;
    sh:description "The hotel performance view referenced in the query." ;
    sh:node googleads:HotelPerformanceViewShape ;
    sh:class googleads:HotelPerformanceView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetGroupSignal> ;
    sh:name "asset group signal" ;
    sh:description "The asset group signal referenced in the query." ;
    sh:node googleads:AssetGroupSignalShape ;
    sh:class googleads:AssetGroupSignal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/dynamicSearchAdsSearchTermView> ;
    sh:name "dynamic search ads search term view" ;
    sh:description "The dynamic search ads search term view referenced in the query." ;
    sh:node googleads:DynamicSearchAdsSearchTermViewShape ;
    sh:class googleads:DynamicSearchAdsSearchTermView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/accountLink> ;
    sh:name "account link" ;
    sh:description "The AccountLink referenced in the query." ;
    sh:node googleads:AccountLinkShape ;
    sh:class googleads:AccountLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/localServicesEmployee> ;
    sh:name "local services employee" ;
    sh:description "The local services employee referenced in the query." ;
    sh:node googleads:LocalServicesEmployeeShape ;
    sh:class googleads:LocalServicesEmployee ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/conversionValueRule> ;
    sh:name "conversion value rule" ;
    sh:description "The conversion value rule referenced in the query." ;
    sh:node googleads:ConversionValueRuleShape ;
    sh:class googleads:ConversionValueRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/androidPrivacySharedKeyGoogleAdGroup> ;
    sh:name "android privacy shared key google ad group" ;
    sh:description "The android privacy shared key google ad group referenced in the query." ;
    sh:node googleads:AndroidPrivacySharedKeyGoogleAdGroupShape ;
    sh:class googleads:AndroidPrivacySharedKeyGoogleAdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/hotelGroupView> ;
    sh:name "hotel group view" ;
    sh:description "The hotel group view referenced in the query." ;
    sh:node googleads:HotelGroupViewShape ;
    sh:class googleads:HotelGroupView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignSharedSet> ;
    sh:name "campaign shared set" ;
    sh:description "Campaign Shared Set referenced in AWQL query." ;
    sh:node googleads:CampaignSharedSetShape ;
    sh:class googleads:CampaignSharedSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/aiMaxSearchTermAdCombinationView> ;
    sh:name "ai max search term ad combination view" ;
    sh:description "The AI Max search term ad combination view referenced in the query." ;
    sh:node googleads:AiMaxSearchTermAdCombinationViewShape ;
    sh:class googleads:AiMaxSearchTermAdCombinationView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/videoEnhancement> ;
    sh:name "video enhancement" ;
    sh:description "The video enhancement referenced in the query." ;
    sh:node googleads:VideoEnhancementShape ;
    sh:class googleads:VideoEnhancement ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupSimulation> ;
    sh:name "ad group simulation" ;
    sh:description "The ad group simulation referenced in the query." ;
    sh:node googleads:AdGroupSimulationShape ;
    sh:class googleads:AdGroupSimulation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/biddingStrategy> ;
    sh:name "bidding strategy" ;
    sh:description "The bidding strategy referenced in the query." ;
    sh:node googleads:BiddingStrategyShape ;
    sh:class googleads:BiddingStrategy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignBudget> ;
    sh:name "campaign budget" ;
    sh:description "The campaign budget referenced in the query." ;
    sh:node googleads:CampaignBudgetShape ;
    sh:class googleads:CampaignBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerClientLink> ;
    sh:name "customer client link" ;
    sh:description "The CustomerClientLink referenced in the query." ;
    sh:node googleads:CustomerClientLinkShape ;
    sh:class googleads:CustomerClientLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/landingPageView> ;
    sh:name "landing page view" ;
    sh:description "The landing page view referenced in the query." ;
    sh:node googleads:LandingPageViewShape ;
    sh:class googleads:LandingPageView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetGroupListingGroupFilter> ;
    sh:name "asset group listing group filter" ;
    sh:description "The asset group listing group filter referenced in the query." ;
    sh:node googleads:AssetGroupListingGroupFilterShape ;
    sh:class googleads:AssetGroupListingGroupFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/localServicesLeadConversation> ;
    sh:name "local services lead conversation" ;
    sh:description "The local services lead conversationreferenced in the query." ;
    sh:node googleads:LocalServicesLeadConversationShape ;
    sh:class googleads:LocalServicesLeadConversation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/combinedAudience> ;
    sh:name "combined audience" ;
    sh:description "The CombinedAudience referenced in the query." ;
    sh:node googleads:CombinedAudienceShape ;
    sh:class googleads:CombinedAudience ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetFieldTypeView> ;
    sh:name "asset field type view" ;
    sh:description "The asset field type view referenced in the query." ;
    sh:node googleads:AssetFieldTypeViewShape ;
    sh:class googleads:AssetFieldTypeView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/travelActivityGroupView> ;
    sh:name "travel activity group view" ;
    sh:description "The travel activity group view referenced in the query." ;
    sh:node googleads:TravelActivityGroupViewShape ;
    sh:class googleads:TravelActivityGroupView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/experiment> ;
    sh:name "experiment" ;
    sh:description "The experiment referenced in the query." ;
    sh:node googleads:ExperimentShape ;
    sh:class googleads:Experiment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/userLocationView> ;
    sh:name "user location view" ;
    sh:description "The user location view referenced in the query." ;
    sh:node googleads:UserLocationViewShape ;
    sh:class googleads:UserLocationView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customConversionGoal> ;
    sh:name "custom conversion goal" ;
    sh:description "The CustomConversionGoal referenced in the query." ;
    sh:node googleads:CustomConversionGoalShape ;
    sh:class googleads:CustomConversionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adParameter> ;
    sh:name "ad parameter" ;
    sh:description "The ad parameter referenced in the query." ;
    sh:node googleads:AdParameterShape ;
    sh:class googleads:AdParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignSimulation> ;
    sh:name "campaign simulation" ;
    sh:description "The campaign simulation referenced in the query." ;
    sh:node googleads:CampaignSimulationShape ;
    sh:class googleads:CampaignSimulation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerUserAccess> ;
    sh:name "customer user access" ;
    sh:description "The CustomerUserAccess referenced in the query." ;
    sh:node googleads:CustomerUserAccessShape ;
    sh:class googleads:CustomerUserAccess ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupCriterionCustomizer> ;
    sh:name "ad group criterion customizer" ;
    sh:description "The ad group criterion customizer referenced in the query." ;
    sh:node googleads:AdGroupCriterionCustomizerShape ;
    sh:class googleads:AdGroupCriterionCustomizer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/finalUrlExpansionAssetView> ;
    sh:name "final url expansion asset view" ;
    sh:description "The final url expansion asset view referenced in the query." ;
    sh:node googleads:FinalUrlExpansionAssetViewShape ;
    sh:class googleads:FinalUrlExpansionAssetView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/parentalStatusView> ;
    sh:name "parental status view" ;
    sh:description "The parental status view referenced in the query." ;
    sh:node googleads:ParentalStatusViewShape ;
    sh:class googleads:ParentalStatusView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/geographicView> ;
    sh:name "geographic view" ;
    sh:description "The geographic view referenced in the query." ;
    sh:node googleads:GeographicViewShape ;
    sh:class googleads:GeographicView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/androidPrivacySharedKeyGoogleCampaign> ;
    sh:name "android privacy shared key google campaign" ;
    sh:description "The android privacy shared key google campaign referenced in the query." ;
    sh:node googleads:AndroidPrivacySharedKeyGoogleCampaignShape ;
    sh:class googleads:AndroidPrivacySharedKeyGoogleCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/hotelReconciliation> ;
    sh:name "hotel reconciliation" ;
    sh:description "The hotel reconciliation referenced in the query." ;
    sh:node googleads:HotelReconciliationShape ;
    sh:class googleads:HotelReconciliation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/sharedCriterion> ;
    sh:name "shared criterion" ;
    sh:description "The shared set referenced in the query." ;
    sh:node googleads:SharedCriterionShape ;
    sh:class googleads:SharedCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignDraft> ;
    sh:name "campaign draft" ;
    sh:description "The campaign draft referenced in the query." ;
    sh:node googleads:CampaignDraftShape ;
    sh:class googleads:CampaignDraft ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/biddingSeasonalityAdjustment> ;
    sh:name "bidding seasonality adjustment" ;
    sh:description "The bidding seasonality adjustment referenced in the query." ;
    sh:node googleads:BiddingSeasonalityAdjustmentShape ;
    sh:class googleads:BiddingSeasonalityAdjustment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerManagerLink> ;
    sh:name "customer manager link" ;
    sh:description "The CustomerManagerLink referenced in the query." ;
    sh:node googleads:CustomerManagerLinkShape ;
    sh:class googleads:CustomerManagerLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/cartDataSalesView> ;
    sh:name "cart data sales view" ;
    sh:description "The cart data sales view referenced in the query." ;
    sh:node googleads:CartDataSalesViewShape ;
    sh:class googleads:CartDataSalesView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/detailPlacementView> ;
    sh:name "detail placement view" ;
    sh:description "The detail placement view referenced in the query." ;
    sh:node googleads:DetailPlacementViewShape ;
    sh:class googleads:DetailPlacementView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetGroupAsset> ;
    sh:name "asset group asset" ;
    sh:description "The asset group asset referenced in the query." ;
    sh:class googleads:AssetGroupAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerUserAccessInvitation> ;
    sh:name "customer user access invitation" ;
    sh:description "The CustomerUserAccessInvitation referenced in the query." ;
    sh:node googleads:CustomerUserAccessInvitationShape ;
    sh:class googleads:CustomerUserAccessInvitation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/keywordPlanAdGroupKeyword> ;
    sh:name "keyword plan ad group keyword" ;
    sh:description "The keyword plan ad group referenced in the query." ;
    sh:node googleads:KeywordPlanAdGroupKeywordShape ;
    sh:class googleads:KeywordPlanAdGroupKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/detailedDemographic> ;
    sh:name "detailed demographic" ;
    sh:description "The detailed demographic referenced in the query." ;
    sh:node googleads:DetailedDemographicShape ;
    sh:class googleads:DetailedDemographic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/remarketingAction> ;
    sh:name "remarketing action" ;
    sh:description "The remarketing action referenced in the query." ;
    sh:node googleads:RemarketingActionShape ;
    sh:class googleads:RemarketingAction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/offlineUserDataJob> ;
    sh:name "offline user data job" ;
    sh:description "The offline user data job referenced in the query." ;
    sh:node googleads:OfflineUserDataJobShape ;
    sh:class googleads:OfflineUserDataJob ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/searchTermView> ;
    sh:name "search term view" ;
    sh:description "The search term view referenced in the query." ;
    sh:node googleads:SearchTermViewShape ;
    sh:class googleads:SearchTermView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/accountBudget> ;
    sh:name "account budget" ;
    sh:description "The account budget in the query." ;
    sh:node googleads:AccountBudgetShape ;
    sh:class googleads:AccountBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerSearchTermInsight> ;
    sh:name "customer search term insight" ;
    sh:description "The customer search term insight referenced in the query." ;
    sh:node googleads:CustomerSearchTermInsightShape ;
    sh:class googleads:CustomerSearchTermInsight ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupBidModifier> ;
    sh:name "ad group bid modifier" ;
    sh:description "The bid modifier referenced in the query." ;
    sh:node googleads:AdGroupBidModifierShape ;
    sh:class googleads:AdGroupBidModifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetGroup> ;
    sh:name "asset group" ;
    sh:description "The asset group referenced in the query." ;
    sh:node googleads:AssetGroupShape ;
    sh:class googleads:AssetGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignLabel> ;
    sh:name "campaign label" ;
    sh:description "The campaign label referenced in the query." ;
    sh:node googleads:CampaignLabelShape ;
    sh:class googleads:CampaignLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupCriterionSimulation> ;
    sh:name "ad group criterion simulation" ;
    sh:description "The ad group criterion simulation referenced in the query." ;
    sh:node googleads:AdGroupCriterionSimulationShape ;
    sh:class googleads:AdGroupCriterionSimulation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/accountBudgetProposal> ;
    sh:name "account budget proposal" ;
    sh:description "The account budget proposal referenced in the query." ;
    sh:node googleads:AccountBudgetProposalShape ;
    sh:class googleads:AccountBudgetProposal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignGroup> ;
    sh:name "campaign group" ;
    sh:description "Campaign Group referenced in AWQL query." ;
    sh:node googleads:CampaignGroupShape ;
    sh:class googleads:CampaignGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerAsset> ;
    sh:name "customer asset" ;
    sh:description "The customer asset referenced in the query." ;
    sh:node googleads:CustomerAssetShape ;
    sh:class googleads:CustomerAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/carrierConstant> ;
    sh:name "carrier constant" ;
    sh:description "The carrier constant referenced in the query." ;
    sh:node googleads:CarrierConstantShape ;
    sh:class googleads:CarrierConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/performanceMaxPlacementView> ;
    sh:name "performance max placement view" ;
    sh:description "The performance max placement view referenced in the query." ;
    sh:node googleads:PerformanceMaxPlacementViewShape ;
    sh:class googleads:PerformanceMaxPlacementView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/asset> ;
    sh:name "asset" ;
    sh:description "The asset referenced in the query." ;
    sh:class googleads:Asset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/biddingDataExclusion> ;
    sh:name "bidding data exclusion" ;
    sh:description "The bidding data exclusion referenced in the query." ;
    sh:node googleads:BiddingDataExclusionShape ;
    sh:class googleads:BiddingDataExclusion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignAsset> ;
    sh:name "campaign asset" ;
    sh:description "The campaign asset referenced in the query." ;
    sh:node googleads:CampaignAssetShape ;
    sh:class googleads:CampaignAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignSearchTermView> ;
    sh:name "campaign search term view" ;
    sh:description "The campaign-level search term view referenced in the query." ;
    sh:node googleads:CampaignSearchTermViewShape ;
    sh:class googleads:CampaignSearchTermView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupAudienceView> ;
    sh:name "ad group audience view" ;
    sh:description "The ad group audience view referenced in the query." ;
    sh:node googleads:AdGroupAudienceViewShape ;
    sh:class googleads:AdGroupAudienceView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/matchedLocationInterestView> ;
    sh:name "matched location interest view" ;
    sh:description "The matched location interest view referenced in the query." ;
    sh:node googleads:MatchedLocationInterestViewShape ;
    sh:class googleads:MatchedLocationInterestView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/distanceView> ;
    sh:name "distance view" ;
    sh:description "The distance view referenced in the query." ;
    sh:node googleads:DistanceViewShape ;
    sh:class googleads:DistanceView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/clickView> ;
    sh:name "click view" ;
    sh:description "The ClickView referenced in the query." ;
    sh:node googleads:ClickViewShape ;
    sh:class googleads:ClickView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/topicView> ;
    sh:name "topic view" ;
    sh:description "The topic view referenced in the query." ;
    sh:node googleads:TopicViewShape ;
    sh:class googleads:TopicView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupLabel> ;
    sh:name "ad group label" ;
    sh:description "The ad group label referenced in the query." ;
    sh:node googleads:AdGroupLabelShape ;
    sh:class googleads:AdGroupLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/conversionGoalCampaignConfig> ;
    sh:name "conversion goal campaign config" ;
    sh:description "The ConversionGoalCampaignConfig referenced in the query." ;
    sh:node googleads:ConversionGoalCampaignConfigShape ;
    sh:class googleads:ConversionGoalCampaignConfig ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/metrics> ;
    sh:name "metrics" ;
    sh:description "The metrics." ;
    sh:node googleads:CommonMetricsShape ;
    sh:class googleads:CommonMetrics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/geoTargetConstant> ;
    sh:name "geo target constant" ;
    sh:description "The geo target constant referenced in the query." ;
    sh:node googleads:GeoTargetConstantShape ;
    sh:class googleads:GeoTargetConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/incomeRangeView> ;
    sh:name "income range view" ;
    sh:description "The income range view referenced in the query." ;
    sh:node googleads:IncomeRangeViewShape ;
    sh:class googleads:IncomeRangeView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/travelActivityPerformanceView> ;
    sh:name "travel activity performance view" ;
    sh:description "The travel activity performance view referenced in the query." ;
    sh:node googleads:TravelActivityPerformanceViewShape ;
    sh:class googleads:TravelActivityPerformanceView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/callView> ;
    sh:name "call view" ;
    sh:description "The call view referenced in the query." ;
    sh:node googleads:CallViewShape ;
    sh:class googleads:CallView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/conversionAction> ;
    sh:name "conversion action" ;
    sh:description "The conversion action referenced in the query." ;
    sh:node googleads:ConversionActionShape ;
    sh:class googleads:ConversionAction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/appliedIncentive> ;
    sh:name "applied incentive" ;
    sh:description "The applied incentive referenced in the query." ;
    sh:node googleads:AppliedIncentiveShape ;
    sh:class googleads:AppliedIncentive ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerLabel> ;
    sh:name "customer label" ;
    sh:description "The customer label referenced in the query." ;
    sh:node googleads:CustomerLabelShape ;
    sh:class googleads:CustomerLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/ageRangeView> ;
    sh:name "age range view" ;
    sh:description "The age range view referenced in the query." ;
    sh:node googleads:AgeRangeViewShape ;
    sh:class googleads:AgeRangeView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/paidOrganicSearchTermView> ;
    sh:name "paid organic search term view" ;
    sh:description "The paid organic search term view referenced in the query." ;
    sh:node googleads:PaidOrganicSearchTermViewShape ;
    sh:class googleads:PaidOrganicSearchTermView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/label> ;
    sh:name "label" ;
    sh:description "The label referenced in the query." ;
    sh:node googleads:LabelShape ;
    sh:class googleads:Label ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/qualifyingQuestion> ;
    sh:name "qualifying question" ;
    sh:description "The qualifying question referenced in the query." ;
    sh:node googleads:QualifyingQuestionShape ;
    sh:class googleads:QualifyingQuestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupCriterionLabel> ;
    sh:name "ad group criterion label" ;
    sh:description "The ad group criterion label referenced in the query." ;
    sh:node googleads:AdGroupCriterionLabelShape ;
    sh:class googleads:AdGroupCriterionLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/detailContentSuitabilityPlacementView> ;
    sh:name "detail content suitability placement view" ;
    sh:description "The detail content suitability placement view referenced in the query." ;
    sh:node googleads:DetailContentSuitabilityPlacementViewShape ;
    sh:class googleads:DetailContentSuitabilityPlacementView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/localServicesVerificationArtifact> ;
    sh:name "local services verification artifact" ;
    sh:description "The local services verification artifact referenced in the query." ;
    sh:node googleads:LocalServicesVerificationArtifactShape ;
    sh:class googleads:LocalServicesVerificationArtifact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/productLink> ;
    sh:name "product link" ;
    sh:description "The product link referenced in the query." ;
    sh:node googleads:ProductLinkShape ;
    sh:class googleads:ProductLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/sharedSet> ;
    sh:name "shared set" ;
    sh:description "The shared set referenced in the query." ;
    sh:node googleads:SharedSetShape ;
    sh:class googleads:SharedSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/userList> ;
    sh:name "user list" ;
    sh:description "The user list referenced in the query." ;
    sh:node googleads:UserListShape ;
    sh:class googleads:UserList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/mobileAppCategoryConstant> ;
    sh:name "mobile app category constant" ;
    sh:description "The mobile app category constant referenced in the query." ;
    sh:node googleads:MobileAppCategoryConstantShape ;
    sh:class googleads:MobileAppCategoryConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignAggregateAssetView> ;
    sh:name "campaign aggregate asset view" ;
    sh:description "The campaign aggregate asset view referenced in the query." ;
    sh:node googleads:CampaignAggregateAssetViewShape ;
    sh:class googleads:CampaignAggregateAssetView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/batchJob> ;
    sh:name "batch job" ;
    sh:description "The batch job referenced in the query." ;
    sh:node googleads:BatchJobShape ;
    sh:class googleads:BatchJob ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/recommendation> ;
    sh:name "recommendation" ;
    sh:description "The recommendation referenced in the query." ;
    sh:class googleads:Recommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/adGroupAdLabel> ;
    sh:name "ad group ad label" ;
    sh:description "The ad group ad label referenced in the query." ;
    sh:node googleads:AdGroupAdLabelShape ;
    sh:class googleads:AdGroupAdLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetSet> ;
    sh:name "asset set" ;
    sh:description "The asset set referenced in the query." ;
    sh:node googleads:AssetSetShape ;
    sh:class googleads:AssetSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/perStoreView> ;
    sh:name "per store view" ;
    sh:description "The per store view referenced in the query." ;
    sh:node googleads:PerStoreViewShape ;
    sh:class googleads:PerStoreView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignLifecycleGoal> ;
    sh:name "campaign lifecycle goal" ;
    sh:description "The campaign lifecycle goal referenced in the query." ;
    sh:node googleads:CampaignLifecycleGoalShape ;
    sh:class googleads:CampaignLifecycleGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/billingSetup> ;
    sh:name "billing setup" ;
    sh:description "The billing setup referenced in the query." ;
    sh:node googleads:BillingSetupShape ;
    sh:class googleads:BillingSetup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/targetingExpansionView> ;
    sh:name "targeting expansion view" ;
    sh:description "The Targeting expansion view referenced in the query." ;
    sh:node googleads:TargetingExpansionViewShape ;
    sh:class googleads:TargetingExpansionView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/experimentArm> ;
    sh:name "experiment arm" ;
    sh:description "The experiment arm referenced in the query." ;
    sh:node googleads:ExperimentArmShape ;
    sh:class googleads:ExperimentArm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/mobileDeviceConstant> ;
    sh:name "mobile device constant" ;
    sh:description "The mobile device constant referenced in the query." ;
    sh:node googleads:MobileDeviceConstantShape ;
    sh:class googleads:MobileDeviceConstant ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/changeStatus> ;
    sh:name "change status" ;
    sh:description "The ChangeStatus referenced in the query." ;
    sh:node googleads:ChangeStatusShape ;
    sh:class googleads:ChangeStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/shoppingPerformanceView> ;
    sh:name "shopping performance view" ;
    sh:description "The shopping performance view referenced in the query." ;
    sh:node googleads:ShoppingPerformanceViewShape ;
    sh:class googleads:ShoppingPerformanceView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/customerAssetSet> ;
    sh:name "customer asset set" ;
    sh:description "The customer asset set referenced in the query." ;
    sh:node googleads:CustomerAssetSetShape ;
    sh:class googleads:CustomerAssetSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignSearchTermInsight> ;
    sh:name "campaign search term insight" ;
    sh:description "The campaign search term insight referenced in the query." ;
    sh:node googleads:CampaignSearchTermInsightShape ;
    sh:class googleads:CampaignSearchTermInsight ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/assetGroupProductGroupView> ;
    sh:name "asset group product group view" ;
    sh:description "The asset group product group view referenced in the query." ;
    sh:node googleads:AssetGroupProductGroupViewShape ;
    sh:class googleads:AssetGroupProductGroupView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/campaignAssetSet> ;
    sh:name "campaign asset set" ;
    sh:description "The campaign asset set referenced in the query." ;
    sh:node googleads:CampaignAssetSetShape ;
    sh:class googleads:CampaignAssetSet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/appTopCombinationView> ;
    sh:name "app top combination view" ;
    sh:description "The app top combination view in the query." ;
    sh:node googleads:AppTopCombinationViewShape ;
    sh:class googleads:AppTopCombinationView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/accessibleBiddingStrategy> ;
    sh:name "accessible bidding strategy" ;
    sh:description "The accessible bidding strategy referenced in the query." ;
    sh:node googleads:AccessibleBiddingStrategyShape ;
    sh:class googleads:AccessibleBiddingStrategy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GoogleAdsRow/locationView> ;
    sh:name "location view" ;
    sh:description "The location view referenced in the query." ;
    sh:node googleads:LocationViewShape ;
    sh:class googleads:LocationView ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Plan
googleads:KeywordPlanShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordPlan ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlan/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Keyword Planner plan. KeywordPlan resource names have the form: `customers/{customer_id}/keywordPlans/{kp_plan_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlan/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the keyword plan." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlan/name> ;
    sh:name "name" ;
    sh:description "The name of the keyword plan. This field is required and should not be empty when creating new keyword plans." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlan/forecastPeriod> ;
    sh:name "forecast period" ;
    sh:description "The date period used for forecasting the plan." ;
    sh:node googleads:KeywordPlanForecastPeriodShape ;
    sh:class googleads:KeywordPlanForecastPeriod ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Plan Forecast Period
googleads:KeywordPlanForecastPeriodShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordPlanForecastPeriod ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanForecastPeriod/dateRange> ;
    sh:name "date range" ;
    sh:description "The custom date range used for forecasting. It cannot be greater than a year. The start and end dates must be in the future. Otherwise, an error will be returned when the forecasting action is performed. The start and end dates are inclusive." ;
    sh:node googleads:DateRangeShape ;
    sh:class googleads:DateRange ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanForecastPeriod/dateInterval> ;
    sh:name "date interval" ;
    sh:description "A future date range relative to the current date used for forecasting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEXT_WEEK" "NEXT_MONTH" "NEXT_QUARTER" ) ;
  ] .

# Shape for Video
googleads:VideoShape a sh:NodeShape ;
  sh:targetClass googleads:Video ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Video/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the video." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Video/channelId> ;
    sh:name "channel id" ;
    sh:description "Output only. The owner channel id of the video." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Video/title> ;
    sh:name "title" ;
    sh:description "Output only. The title of the video." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Video/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the video. Video resource names have the form: `customers/{customer_id}/videos/{video_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Video/durationMillis> ;
    sh:name "duration millis" ;
    sh:description "Output only. The duration of the video in milliseconds." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Language Constant
googleads:LanguageConstantShape a sh:NodeShape ;
  sh:targetClass googleads:LanguageConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LanguageConstant/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the language constant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LanguageConstant/code> ;
    sh:name "code" ;
    sh:description "Output only. The language code, for example, \"en_US\", \"en_AU\", \"es\", \"fr\", etc." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LanguageConstant/name> ;
    sh:name "name" ;
    sh:description "Output only. The full name of the language in English, for example, \"English (US)\", \"Spanish\", etc." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LanguageConstant/targetable> ;
    sh:name "targetable" ;
    sh:description "Output only. Whether the language is targetable." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LanguageConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the language constant. Language constant resource names have the form: `languageConstants/{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Group Placement View
googleads:GroupPlacementViewShape a sh:NodeShape ;
  sh:targetClass googleads:GroupPlacementView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupPlacementView/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. Domain name for websites and YouTube channel name for YouTube channels." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupPlacementView/placement> ;
    sh:name "placement" ;
    sh:description "Output only. The automatic placement string at group level, e. g. web domain, mobile app ID, or a YouTube channel ID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupPlacementView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the group placement view. Group placement view resource names have the form: `customers/{customer_id}/groupPlacementViews/{ad_group_id}~{base64_placement}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupPlacementView/targetUrl> ;
    sh:name "target url" ;
    sh:description "Output only. URL of the group placement, for example, domain, link to the mobile application in app store, or a YouTube channel URL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupPlacementView/placementType> ;
    sh:name "placement type" ;
    sh:description "Output only. Type of the placement, for example, Website, YouTube Channel, Mobile Application." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "GOOGLE_PRODUCTS" ) ;
  ] .

# Shape for Smart Campaign Setting
googleads:SmartCampaignSettingShape a sh:NodeShape ;
  sh:targetClass googleads:SmartCampaignSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Smart campaign setting. Smart campaign setting resource names have the form: `customers/{customer_id}/smartCampaignSettings/{campaign_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "Phone number and country code." ;
    sh:node googleads:SmartCampaignSettingPhoneNumberShape ;
    sh:class googleads:SmartCampaignSettingPhoneNumber ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/finalUrl> ;
    sh:name "final url" ;
    sh:description "The user-provided landing page URL for this Campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/adOptimizedBusinessProfileSetting> ;
    sh:name "ad optimized business profile setting" ;
    sh:description "Settings for configuring a business profile optimized for ads as this campaign's landing page. This campaign must be linked to a business profile to use this option. For more information on this feature, consult https://support.google.com/google-ads/answer/9827068." ;
    sh:node googleads:SmartCampaignSettingAdOptimizedBusinessProfileSettingShape ;
    sh:class googleads:SmartCampaignSettingAdOptimizedBusinessProfileSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The campaign to which these settings apply." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/advertisingLanguageCode> ;
    sh:name "advertising language code" ;
    sh:description "The language code to advertise in from the set of [supported language codes] (https://developers.google.com/google-ads/api/reference/data/codes-formats#languages)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/businessProfileLocation> ;
    sh:name "business profile location" ;
    sh:description "The resource name of a Business Profile location. Business Profile location resource names can be fetched through the Business Profile API and adhere to the following format: `locations/{locationId}`. See the [Business Profile API] (https://developers.google.com/my-business/reference/businessinformation/rest/v1/accounts.locations) for additional details." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSetting/businessName> ;
    sh:name "business name" ;
    sh:description "The name of the business." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Smart Campaign Setting Phone Number
googleads:SmartCampaignSettingPhoneNumberShape a sh:NodeShape ;
  sh:targetClass googleads:SmartCampaignSettingPhoneNumber ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSettingPhoneNumber/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "Phone number of the smart campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSettingPhoneNumber/countryCode> ;
    sh:name "country code" ;
    sh:description "Upper-case, two-letter country code as defined by ISO-3166." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Smart Campaign Setting Ad Optimized Business Profile Setting
googleads:SmartCampaignSettingAdOptimizedBusinessProfileSettingShape a sh:NodeShape ;
  sh:targetClass googleads:SmartCampaignSettingAdOptimizedBusinessProfileSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSettingAdOptimizedBusinessProfileSetting/includeLeadForm> ;
    sh:name "include lead form" ;
    sh:description "Enabling a lead form on your business profile enables prospective customers to contact your business by filling out a simple form, and you'll receive their information through email." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for User List Customer Type
googleads:UserListCustomerTypeShape a sh:NodeShape ;
  sh:targetClass googleads:UserListCustomerType ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListCustomerType/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the user list customer type User list customer type resource names have the form: `customers/{customer_id}/userListCustomerTypes/{user_list_id}~{customer_type_category}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListCustomerType/userList> ;
    sh:name "user list" ;
    sh:description "Immutable. The resource name for the user list this user list customer type is associated with" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListCustomerType/customerTypeCategory> ;
    sh:name "customer type category" ;
    sh:description "Immutable. The user list customer type category" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ALL_CUSTOMERS" "PURCHASERS" "HIGH_VALUE_CUSTOMERS" "DISENGAGED_CUSTOMERS" "QUALIFIED_LEADS" "CONVERTED_LEADS" "PAID_SUBSCRIBERS" "CART_ABANDONERS" "LOYALTY_TIER_1_MEMBERS" "LOYALTY_TIER_2_MEMBERS" "LOYALTY_TIER_3_MEMBERS" "LOYALTY_TIER_4_MEMBERS" "LOYALTY_TIER_5_MEMBERS" "LOYALTY_TIER_6_MEMBERS" "LOYALTY_TIER_7_MEMBERS" ) ;
  ] .

# Shape for Segments
googleads:SegmentsShape a sh:NodeShape ;
  sh:targetClass googleads:Segments ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productAggregatorId> ;
    sh:name "product aggregator id" ;
    sh:description "Aggregator ID of the product." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/searchEngineResultsPageType> ;
    sh:name "search engine results page type" ;
    sh:description "Type of the search engine results page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADS_ONLY" "ORGANIC_ONLY" "ADS_AND_ORGANIC" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/travelDestinationRegion> ;
    sh:name "travel destination region" ;
    sh:description "The region the user is searching for at query time." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkVersion> ;
    sh:name "sk ad network version" ;
    sh:description "The version of the SKAdNetwork API used." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productTypeL5> ;
    sh:name "product type l5" ;
    sh:description "Type (level 5) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelState> ;
    sh:name "hotel state" ;
    sh:description "Hotel state." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldTypeL5> ;
    sh:name "product sold type l5" ;
    sh:description "Type (level 5) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionValueRulePrimaryDimension> ;
    sh:name "conversion value rule primary dimension" ;
    sh:description "Primary dimension of applied conversion value rules. NO_RULE_APPLIED shows the total recorded value of conversions that do not have a value rule applied. ORIGINAL shows the original value of conversions to which a value rule has been applied. GEO_LOCATION, DEVICE, AUDIENCE, ITINERARY show the net adjustment after value rules were applied." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NO_RULE_APPLIED" "ORIGINAL" "NEW_VS_RETURNING_USER" "GEO_LOCATION" "DEVICE" "AUDIENCE" "MULTIPLE" "ITINERARY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCondition> ;
    sh:name "product sold condition" ;
    sh:description "Condition of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW" "REFURBISHED" "USED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetPostalCode> ;
    sh:name "geo target postal code" ;
    sh:description "Resource name of the geo target constant that represents a postal code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/auctionInsightDomain> ;
    sh:name "auction insight domain" ;
    sh:description "Domain (visible URL) of a participant in the Auction Insights report." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionOrAdjustmentLagBucket> ;
    sh:name "conversion or adjustment lag bucket" ;
    sh:description "An enum value representing the number of days between the impression and the conversion or between the impression and adjustments to the conversion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CONVERSION_LESS_THAN_ONE_DAY" "CONVERSION_ONE_TO_TWO_DAYS" "CONVERSION_TWO_TO_THREE_DAYS" "CONVERSION_THREE_TO_FOUR_DAYS" "CONVERSION_FOUR_TO_FIVE_DAYS" "CONVERSION_FIVE_TO_SIX_DAYS" "CONVERSION_SIX_TO_SEVEN_DAYS" "CONVERSION_SEVEN_TO_EIGHT_DAYS" "CONVERSION_EIGHT_TO_NINE_DAYS" "CONVERSION_NINE_TO_TEN_DAYS" "CONVERSION_TEN_TO_ELEVEN_DAYS" "CONVERSION_ELEVEN_TO_TWELVE_DAYS" "CONVERSION_TWELVE_TO_THIRTEEN_DAYS" "CONVERSION_THIRTEEN_TO_FOURTEEN_DAYS" "CONVERSION_FOURTEEN_TO_TWENTY_ONE_DAYS" "CONVERSION_TWENTY_ONE_TO_THIRTY_DAYS" "CONVERSION_THIRTY_TO_FORTY_FIVE_DAYS" "CONVERSION_FORTY_FIVE_TO_SIXTY_DAYS" "CONVERSION_SIXTY_TO_NINETY_DAYS" "ADJUSTMENT_LESS_THAN_ONE_DAY" "ADJUSTMENT_ONE_TO_TWO_DAYS" "ADJUSTMENT_TWO_TO_THREE_DAYS" "ADJUSTMENT_THREE_TO_FOUR_DAYS" "ADJUSTMENT_FOUR_TO_FIVE_DAYS" "ADJUSTMENT_FIVE_TO_SIX_DAYS" "ADJUSTMENT_SIX_TO_SEVEN_DAYS" "ADJUSTMENT_SEVEN_TO_EIGHT_DAYS" "ADJUSTMENT_EIGHT_TO_NINE_DAYS" "ADJUSTMENT_NINE_TO_TEN_DAYS" "ADJUSTMENT_TEN_TO_ELEVEN_DAYS" "ADJUSTMENT_ELEVEN_TO_TWELVE_DAYS" "ADJUSTMENT_TWELVE_TO_THIRTEEN_DAYS" "ADJUSTMENT_THIRTEEN_TO_FOURTEEN_DAYS" "ADJUSTMENT_FOURTEEN_TO_TWENTY_ONE_DAYS" "ADJUSTMENT_TWENTY_ONE_TO_THIRTY_DAYS" "ADJUSTMENT_THIRTY_TO_FORTY_FIVE_DAYS" "ADJUSTMENT_FORTY_FIVE_TO_SIXTY_DAYS" "ADJUSTMENT_SIXTY_TO_NINETY_DAYS" "ADJUSTMENT_NINETY_TO_ONE_HUNDRED_AND_FORTY_FIVE_DAYS" "CONVERSION_UNKNOWN" "ADJUSTMENT_UNKNOWN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productTypeL2> ;
    sh:name "product type l2" ;
    sh:description "Type (level 2) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/newVersusReturningCustomers> ;
    sh:name "new versus returning customers" ;
    sh:description "This is for segmenting conversions by whether the user is a new customer or a returning customer. This segmentation is typically used to measure the impact of customer acquisition goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW" "RETURNING" "NEW_AND_HIGH_LTV" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/date> ;
    sh:name "date" ;
    sh:description "Date to which metrics apply. yyyy-MM-dd format, for example, 2018-04-17." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCustomAttribute4> ;
    sh:name "product sold custom attribute4" ;
    sh:description "Custom attribute 4 of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adDestinationType> ;
    sh:name "ad destination type" ;
    sh:description "Ad Destination type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOT_APPLICABLE" "WEBSITE" "APP_DEEP_LINK" "APP_STORE" "PHONE_CALL" "MAP_DIRECTIONS" "LOCATION_LISTING" "MESSAGE" "LEAD_FORM" "YOUTUBE" "UNMODELED_FOR_CONVERSIONS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productItemId> ;
    sh:name "product item id" ;
    sh:description "Item ID of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productTypeL3> ;
    sh:name "product type l3" ;
    sh:description "Type (level 3) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/partnerHotelId> ;
    sh:name "partner hotel id" ;
    sh:description "Partner hotel ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelCheckInDate> ;
    sh:name "hotel check in date" ;
    sh:description "Hotel check-in date. Formatted as yyyy-MM-dd." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkPostbackSequenceIndex> ;
    sh:name "sk ad network postback sequence index" ;
    sh:description "iOS Store Kit Ad Network postback sequence index." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/searchTermMatchSource> ;
    sh:name "search term match source" ;
    sh:description "Specifies the source for how the search term was matched, which reveals the type of ad campaign responsible. Use this to distinguish between automated campaigns (like AI Max, Dynamic Search Ads) and keyword-based campaigns (Standard)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER_PROVIDED_KEYWORD" "AI_MAX_KEYWORDLESS" "AI_MAX_BROAD_MATCH" "DYNAMIC_SEARCH_ADS" "PERFORMANCE_MAX" "VERTICAL_ADS_DATA_FEED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCustomAttribute2> ;
    sh:name "product custom attribute2" ;
    sh:description "Custom attribute 2 of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productFeedLabel> ;
    sh:name "product feed label" ;
    sh:description "Feed label of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/activityAccountId> ;
    sh:name "activity account id" ;
    sh:description "Activity account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkSourceType> ;
    sh:name "sk ad network source type" ;
    sh:description "The source type where the ad that drove the iOS Store Kit Ad Network install was shown. Null value means this segment is not applicable, for example, non-iOS campaign, or neither source domain nor source app were present in any postbacks sent by Apple." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNAVAILABLE" "WEBSITE" "MOBILE_APPLICATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Resource name of the asset group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetProvince> ;
    sh:name "geo target province" ;
    sh:description "Resource name of the geo target constant that represents a province." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productChannel> ;
    sh:name "product channel" ;
    sh:description "Channel of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ONLINE" "LOCAL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkUserType> ;
    sh:name "sk ad network user type" ;
    sh:description "iOS Store Kit Ad Network user type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNAVAILABLE" "NEW_INSTALLER" "REINSTALLER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adjustedGender> ;
    sh:name "adjusted gender" ;
    sh:description "Adjusted gender. This is the gender of the user after applying modeling to get more accurate age and gender information. Currently, both adjusted_age_range and adjusted_gender need to be selected together to get valid reach stats. These segmentations are only available for allowlisted customers." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MALE" "FEMALE" "UNDETERMINED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetCounty> ;
    sh:name "geo target county" ;
    sh:description "Resource name of the geo target constant that represents a county." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetCity> ;
    sh:name "geo target city" ;
    sh:description "Resource name of the geo target constant that represents a city." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adNetworkType> ;
    sh:name "ad network type" ;
    sh:description "Ad network type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH" "SEARCH_PARTNERS" "CONTENT" "MIXED" "YOUTUBE" "GOOGLE_TV" "GOOGLE_OWNED_CHANNELS" "GMAIL" "DISCOVER" "MAPS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/keyword> ;
    sh:name "keyword" ;
    sh:description "Keyword criterion." ;
    sh:node googleads:KeywordShape ;
    sh:class googleads:Keyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/slot> ;
    sh:name "slot" ;
    sh:description "Position of the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SEARCH_SIDE" "SEARCH_TOP" "SEARCH_OTHER" "CONTENT" "SEARCH_PARTNER_TOP" "SEARCH_PARTNER_OTHER" "MIXED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/clickType> ;
    sh:name "click type" ;
    sh:description "Click type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APP_DEEPLINK" "BREADCRUMBS" "BROADBAND_PLAN" "CALL_TRACKING" "CALLS" "CLICK_ON_ENGAGEMENT_AD" "GET_DIRECTIONS" "LOCATION_EXPANSION" "LOCATION_FORMAT_CALL" "LOCATION_FORMAT_DIRECTIONS" "LOCATION_FORMAT_IMAGE" "LOCATION_FORMAT_LANDING_PAGE" "LOCATION_FORMAT_MAP" "LOCATION_FORMAT_STORE_INFO" "LOCATION_FORMAT_TEXT" "MOBILE_CALL_TRACKING" "OFFER_PRINTS" "OTHER" "PRODUCT_EXTENSION_CLICKS" "PRODUCT_LISTING_AD_CLICKS" "SITELINKS" "STORE_LOCATOR" "URL_CLICKS" "VIDEO_APP_STORE_CLICKS" "VIDEO_CALL_TO_ACTION_CLICKS" "VIDEO_CARD_ACTION_HEADLINE_CLICKS" "VIDEO_END_CAP_CLICKS" "VIDEO_WEBSITE_CLICKS" "VISUAL_SITELINKS" "WIRELESS_PLAN" "PRODUCT_LISTING_AD_LOCAL" "PRODUCT_LISTING_AD_MULTICHANNEL_LOCAL" "PRODUCT_LISTING_AD_MULTICHANNEL_ONLINE" "PRODUCT_LISTING_ADS_COUPON" "PRODUCT_LISTING_AD_TRANSACTABLE" "PRODUCT_AD_APP_DEEPLINK" "SHOWCASE_AD_CATEGORY_LINK" "SHOWCASE_AD_LOCAL_STOREFRONT_LINK" "SHOWCASE_AD_ONLINE_PRODUCT_LINK" "SHOWCASE_AD_LOCAL_PRODUCT_LINK" "PROMOTION_EXTENSION" "SWIPEABLE_GALLERY_AD_HEADLINE" "SWIPEABLE_GALLERY_AD_SWIPES" "SWIPEABLE_GALLERY_AD_SEE_MORE" "SWIPEABLE_GALLERY_AD_SITELINK_ONE" "SWIPEABLE_GALLERY_AD_SITELINK_TWO" "SWIPEABLE_GALLERY_AD_SITELINK_THREE" "SWIPEABLE_GALLERY_AD_SITELINK_FOUR" "SWIPEABLE_GALLERY_AD_SITELINK_FIVE" "HOTEL_PRICE" "PRICE_EXTENSION" "HOTEL_BOOK_ON_GOOGLE_ROOM_SELECTION" "SHOPPING_COMPARISON_LISTING" "CROSS_NETWORK" "AD_IMAGE" "TRAVEL_ASSETS" "VEHICLE_ASSETS" "PRODUCT_ASSETS" "VIDEO_CHANNEL_CLICK" "VIDEO_RELATED_VIDEOS_CLICK" "CLICK_TO_MESSAGE_THIRD_PARTY_CLICK" "CLICK_TO_MESSAGE_LANDING_PAGE_CLICK" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCustomAttribute4> ;
    sh:name "product custom attribute4" ;
    sh:description "Custom attribute 4 of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsListingCity> ;
    sh:name "vertical ads listing city" ;
    sh:description "The city where the vertical ads listing is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCountry> ;
    sh:name "product country" ;
    sh:description "Resource name of the geo target constant for the country of sale of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsPartnerAccount> ;
    sh:name "vertical ads partner account" ;
    sh:description "A specific partner account within a Partner Center (for example, Hotel Center) that supplies inventory feed data for Vertical Ads." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/landingPageSource> ;
    sh:name "landing page source" ;
    sh:description "The source of a landing page in the landing page report." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "AUTOMATIC" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionAction> ;
    sh:name "conversion action" ;
    sh:description "Resource name of the conversion action." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productTitle> ;
    sh:name "product title" ;
    sh:description "Title of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/searchTermMatchType> ;
    sh:name "search term match type" ;
    sh:description "Match type of the keyword that triggered the ad. This segment is for use with keyword_view. For other resources, use match_type. While match_type is filtered to Broad, Exact, Phrase and Ai Max, search_term_match_type includes variants like Near Exact and Near Phrase." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BROAD" "EXACT" "PHRASE" "NEAR_EXACT" "NEAR_PHRASE" "AI_MAX" "PERFORMANCE_MAX" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkAdEventType> ;
    sh:name "sk ad network ad event type" ;
    sh:description "iOS Store Kit Ad Network ad event type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNAVAILABLE" "INTERACTION" "VIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/activityCountry> ;
    sh:name "activity country" ;
    sh:description "The country where the travel activity is available." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetCanton> ;
    sh:name "geo target canton" ;
    sh:description "Resource name of the geo target constant that represents a canton." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCategoryLevel3> ;
    sh:name "product sold category level3" ;
    sh:description "Category (level 3) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsListingVenue> ;
    sh:name "vertical ads listing venue" ;
    sh:description "The name of the venue for the vertical ads listing, for example, the venue for a concert event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productTypeL4> ;
    sh:name "product type l4" ;
    sh:description "Type (level 4) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelRateRuleId> ;
    sh:name "hotel rate rule id" ;
    sh:description "Hotel rate rule ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsVertical> ;
    sh:name "vertical ads vertical" ;
    sh:description "Type of vertical ad, such as Vacation Rentals, Car Rentals, or Events, used to categorize and segment data in the context of Vertical Ads." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HOTELS" "VACATION_RENTALS" "RENTAL_CARS" "EVENTS" "THINGS_TO_DO" "FLIGHTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/assetInteractionTarget> ;
    sh:name "asset interaction target" ;
    sh:description "Only used with CustomerAsset, CampaignAsset and AdGroupAsset metrics. Indicates whether the interaction metrics occurred on the asset itself or a different asset or ad unit. Interactions (for example, clicks) are counted across all the parts of the served ad (for example, Ad itself and other components like Sitelinks) when they are served together. When interaction_on_this_asset is true, it means the interactions are on this specific asset and when interaction_on_this_asset is false, it means the interactions is not on this specific asset but on other parts of the served ad this asset is served with." ;
    sh:node googleads:AssetInteractionTargetShape ;
    sh:class googleads:AssetInteractionTarget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productTypeL1> ;
    sh:name "product type l1" ;
    sh:description "Type (level 1) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsListingBrand> ;
    sh:name "vertical ads listing brand" ;
    sh:description "The brand associated with a specific listing within a Vertical Ads context, for example, the brand of a car rental, a vacation home, or an event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldTypeL3> ;
    sh:name "product sold type l3" ;
    sh:description "Type (level 3) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetRegion> ;
    sh:name "geo target region" ;
    sh:description "Resource name of the geo target constant that represents a region." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelCountry> ;
    sh:name "hotel country" ;
    sh:description "Hotel country." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "Recommendation type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BUDGET" "KEYWORD" "TEXT_AD" "TARGET_CPA_OPT_IN" "MAXIMIZE_CONVERSIONS_OPT_IN" "ENHANCED_CPC_OPT_IN" "SEARCH_PARTNERS_OPT_IN" "MAXIMIZE_CLICKS_OPT_IN" "OPTIMIZE_AD_ROTATION" "KEYWORD_MATCH_TYPE" "MOVE_UNUSED_BUDGET" "FORECASTING_CAMPAIGN_BUDGET" "TARGET_ROAS_OPT_IN" "RESPONSIVE_SEARCH_AD" "MARGINAL_ROI_CAMPAIGN_BUDGET" "USE_BROAD_MATCH_KEYWORD" "RESPONSIVE_SEARCH_AD_ASSET" "UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX" "RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH" "DISPLAY_EXPANSION_OPT_IN" "UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX" "RAISE_TARGET_CPA_BID_TOO_LOW" "FORECASTING_SET_TARGET_ROAS" "CALLOUT_ASSET" "SITELINK_ASSET" "CALL_ASSET" "SHOPPING_ADD_AGE_GROUP" "SHOPPING_ADD_COLOR" "SHOPPING_ADD_GENDER" "SHOPPING_ADD_GTIN" "SHOPPING_ADD_MORE_IDENTIFIERS" "SHOPPING_ADD_SIZE" "SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN" "SHOPPING_FIX_DISAPPROVED_PRODUCTS" "SHOPPING_TARGET_ALL_OFFERS" "SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT" "SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING" "SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX" "DYNAMIC_IMAGE_EXTENSION_OPT_IN" "RAISE_TARGET_CPA" "LOWER_TARGET_ROAS" "PERFORMANCE_MAX_OPT_IN" "IMPROVE_PERFORMANCE_MAX_AD_STRENGTH" "MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX" "FORECASTING_SET_TARGET_CPA" "SET_TARGET_CPA" "SET_TARGET_ROAS" "MAXIMIZE_CONVERSION_VALUE_OPT_IN" "IMPROVE_GOOGLE_TAG_COVERAGE" "PERFORMANCE_MAX_FINAL_URL_OPT_IN" "REFRESH_CUSTOMER_MATCH_LIST" "CUSTOM_AUDIENCE_OPT_IN" "LEAD_FORM_ASSET" "IMPROVE_DEMAND_GEN_AD_STRENGTH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetCountry> ;
    sh:name "geo target country" ;
    sh:description "Resource name of the geo target constant that represents a country." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCustomAttribute2> ;
    sh:name "product sold custom attribute2" ;
    sh:description "Custom attribute 2 of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adSubNetworkType> ;
    sh:name "ad sub network type" ;
    sh:description "Ad sub network type. Currently only available for ads running as part of DemandGen campaigns on YouTube and has to always be selected together with ad_network_type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNSEGMENTED" "YOUTUBE_INSTREAM" "YOUTUBE_INFEED" "YOUTUBE_SHORTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/travelDestinationCity> ;
    sh:name "travel destination city" ;
    sh:description "The city the user is searching for at query time." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsEventParticipantDisplayNames> ;
    sh:name "vertical ads event participant display names" ;
    sh:description "The display names of participants in an event listing, like performers, speakers, or teams." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkSourceDomain> ;
    sh:name "sk ad network source domain" ;
    sh:description "Website where the ad that drove the iOS Store Kit Ad Network install was shown. Null value means this segment is not applicable, for example, non-iOS campaign, or was not present in any postbacks sent by Apple." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionAttributionEventType> ;
    sh:name "conversion attribution event type" ;
    sh:description "Conversion attribution event type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IMPRESSION" "INTERACTION" "ENGAGED_VIEW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelClass> ;
    sh:name "hotel class" ;
    sh:description "Hotel class." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCondition> ;
    sh:name "product condition" ;
    sh:description "Condition of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW" "REFURBISHED" "USED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsListingCountry> ;
    sh:name "vertical ads listing country" ;
    sh:description "The country where the vertical ads listing is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productStoreId> ;
    sh:name "product store id" ;
    sh:description "Store ID of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/month> ;
    sh:name "month" ;
    sh:description "Month as represented by the date of the first day of a month. Formatted as yyyy-MM-dd." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/dayOfWeek> ;
    sh:name "day of week" ;
    sh:description "Day of the week, for example, MONDAY." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetMostSpecificLocation> ;
    sh:name "geo target most specific location" ;
    sh:description "Resource name of the geo target constant that represents the most specific location." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hour> ;
    sh:name "hour" ;
    sh:description "Hour of day as a number between 0 and 23, inclusive." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelRateType> ;
    sh:name "hotel rate type" ;
    sh:description "Hotel rate type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNAVAILABLE" "PUBLIC_RATE" "QUALIFIED_RATE" "PRIVATE_RATE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetDistrict> ;
    sh:name "geo target district" ;
    sh:description "Resource name of the geo target constant that represents a district." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCategoryLevel4> ;
    sh:name "product category level4" ;
    sh:description "Category (level 4) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/quarter> ;
    sh:name "quarter" ;
    sh:description "Quarter as represented by the date of the first day of a quarter. Uses the calendar year for quarters, for example, the second quarter of 2018 starts on 2018-04-01. Formatted as yyyy-MM-dd." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelDateSelectionType> ;
    sh:name "hotel date selection type" ;
    sh:description "Hotel date selection type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT_SELECTION" "USER_SELECTED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionAdjustment> ;
    sh:name "conversion adjustment" ;
    sh:description "This segments your conversion columns by the original conversion and conversion value versus the delta if conversions were adjusted. False row has the data as originally stated; While true row has the delta between data now and the data as originally stated. Summing the two together results post-adjustment data." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/activityRating> ;
    sh:name "activity rating" ;
    sh:description "Activity rating." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/webpage> ;
    sh:name "webpage" ;
    sh:description "Resource name of the ad group criterion that represents webpage criterion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkSourceApp> ;
    sh:name "sk ad network source app" ;
    sh:description "App where the ad that drove the iOS Store Kit Ad Network install was shown. Null value means this segment is not applicable, for example, non-iOS campaign, or was not present in any postbacks sent by Apple." ;
    sh:node googleads:SkAdNetworkSourceAppShape ;
    sh:class googleads:SkAdNetworkSourceApp ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adUsingProductData> ;
    sh:name "ad using product data" ;
    sh:description "Indicates whether an ad is using product data from a Google Merchant Center feed. This segment is only available for PMax campaigns and will not return data when any other campaign type is selected." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adUsingVideo> ;
    sh:name "ad using video" ;
    sh:description "Indicates whether an ad is using a video asset. This segment is only available for PMax campaigns and will not return data when any other campaign type is selected." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetState> ;
    sh:name "geo target state" ;
    sh:description "Resource name of the geo target constant that represents a state." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/budgetCampaignAssociationStatus> ;
    sh:name "budget campaign association status" ;
    sh:description "Budget campaign association status." ;
    sh:node googleads:BudgetCampaignAssociationStatusShape ;
    sh:class googleads:BudgetCampaignAssociationStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsListingRegion> ;
    sh:name "vertical ads listing region" ;
    sh:description "The region where the vertical ads listing is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adjustedAgeRange> ;
    sh:name "adjusted age range" ;
    sh:description "Adjusted age range. This is the age range of the user after applying modeling to get more accurate age and gender information. Currently, both adjusted_age_range and adjusted_gender need to be selected together to get valid reach stats. These segmentations are only available for allowlisted customers." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AGE_RANGE_18_24" "AGE_RANGE_25_34" "AGE_RANGE_35_44" "AGE_RANGE_45_54" "AGE_RANGE_55_64" "AGE_RANGE_65_UP" "AGE_RANGE_UNDETERMINED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldTypeL1> ;
    sh:name "product sold type l1" ;
    sh:description "Type (level 1) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsHotelClass> ;
    sh:name "vertical ads hotel class" ;
    sh:description "The class of the hotel. Generally in the range of 1 to 5 stars, but fully customizable in the hotel feed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/searchSubcategory> ;
    sh:name "search subcategory" ;
    sh:description "A search term subcategory. An empty string denotes the catch-all subcategory for search terms that didn't fit into another subcategory." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/externalActivityId> ;
    sh:name "external activity id" ;
    sh:description "Advertiser supplied activity ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productLanguage> ;
    sh:name "product language" ;
    sh:description "Resource name of the language constant for the language of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelBookingWindowDays> ;
    sh:name "hotel booking window days" ;
    sh:description "Hotel booking window in days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/device> ;
    sh:name "device" ;
    sh:description "Device to which metrics apply." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MOBILE" "TABLET" "DESKTOP" "CONNECTED_TV" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/monthOfYear> ;
    sh:name "month of year" ;
    sh:description "Month of the year, for example, January." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "JANUARY" "FEBRUARY" "MARCH" "APRIL" "MAY" "JUNE" "JULY" "AUGUST" "SEPTEMBER" "OCTOBER" "NOVEMBER" "DECEMBER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldTypeL4> ;
    sh:name "product sold type l4" ;
    sh:description "Type (level 4) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelCenterId> ;
    sh:name "hotel center id" ;
    sh:description "Hotel center ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldTypeL2> ;
    sh:name "product sold type l2" ;
    sh:description "Type (level 2) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/campaign> ;
    sh:name "campaign" ;
    sh:description "Resource name of the campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCategoryLevel2> ;
    sh:name "product sold category level2" ;
    sh:description "Category (level 2) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCategoryLevel5> ;
    sh:name "product sold category level5" ;
    sh:description "Category (level 5) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/searchTermTargetingStatus> ;
    sh:name "search term targeting status" ;
    sh:description "Indicates whether the search term is currently one of your targeted or excluded keywords." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADDED" "EXCLUDED" "ADDED_EXCLUDED" "NONE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adFormatType> ;
    sh:name "ad format type" ;
    sh:description "Ad Format type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OTHER" "UNSEGMENTED" "INSTREAM_SKIPPABLE" "INSTREAM_NON_SKIPPABLE" "INFEED" "BUMPER" "OUTSTREAM" "MASTHEAD" "AUDIO" "SHORTS" "PAUSE" "VERTICAL_ADS_PROMOTION" "VERTICAL_ADS_BOOKING_LINK" "TEXT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelPriceBucket> ;
    sh:name "hotel price bucket" ;
    sh:description "Hotel price bucket." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LOWEST_UNIQUE" "LOWEST_TIED" "NOT_LOWEST" "ONLY_PARTNER_SHOWN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/activityState> ;
    sh:name "activity state" ;
    sh:description "The state where the travel activity is available." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCategoryLevel2> ;
    sh:name "product category level2" ;
    sh:description "Category (level 2) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCategoryLevel3> ;
    sh:name "product category level3" ;
    sh:description "Category (level 3) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkCoarseConversionValue> ;
    sh:name "sk ad network coarse conversion value" ;
    sh:description "iOS Store Kit Ad Network coarse conversion value." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNAVAILABLE" "LOW" "MEDIUM" "HIGH" "NONE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelLengthOfStay> ;
    sh:name "hotel length of stay" ;
    sh:description "Hotel length of stay." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldItemId> ;
    sh:name "product sold item id" ;
    sh:description "Item ID of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCategoryLevel5> ;
    sh:name "product category level5" ;
    sh:description "Category (level 5) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkFineConversionValue> ;
    sh:name "sk ad network fine conversion value" ;
    sh:description "iOS Store Kit Ad Network conversion value. Null value means this segment is not applicable, for example, non-iOS campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/adGroup> ;
    sh:name "ad group" ;
    sh:description "Resource name of the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/matchType> ;
    sh:name "match type" ;
    sh:description "The match type of the keyword that triggered the ad. This segment is for use with keyword_view. For other resources, use search_term_match_type. While match_type is filtered to Broad, Exact, Phrase and Ai Max, search_term_match_type includes variants like Near Exact, Near Phrase." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BROAD" "EXACT" "PHRASE" "AI_MAX" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelCity> ;
    sh:name "hotel city" ;
    sh:description "Hotel city." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCategoryLevel1> ;
    sh:name "product category level1" ;
    sh:description "Category (level 1) of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetAirport> ;
    sh:name "geo target airport" ;
    sh:description "Resource name of the geo target constant that represents an airport." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCategoryLevel1> ;
    sh:name "product sold category level1" ;
    sh:description "Category (level 1) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionLagBucket> ;
    sh:name "conversion lag bucket" ;
    sh:description "An enum value representing the number of days between the impression and the conversion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LESS_THAN_ONE_DAY" "ONE_TO_TWO_DAYS" "TWO_TO_THREE_DAYS" "THREE_TO_FOUR_DAYS" "FOUR_TO_FIVE_DAYS" "FIVE_TO_SIX_DAYS" "SIX_TO_SEVEN_DAYS" "SEVEN_TO_EIGHT_DAYS" "EIGHT_TO_NINE_DAYS" "NINE_TO_TEN_DAYS" "TEN_TO_ELEVEN_DAYS" "ELEVEN_TO_TWELVE_DAYS" "TWELVE_TO_THIRTEEN_DAYS" "THIRTEEN_TO_FOURTEEN_DAYS" "FOURTEEN_TO_TWENTY_ONE_DAYS" "TWENTY_ONE_TO_THIRTY_DAYS" "THIRTY_TO_FORTY_FIVE_DAYS" "FORTY_FIVE_TO_SIXTY_DAYS" "SIXTY_TO_NINETY_DAYS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/mobileDevicePlatform> ;
    sh:name "mobile device platform" ;
    sh:description "Mobile device platform to which metrics apply." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ANDROID" "IOS" "OTHER_MOBILE" "DESKTOP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCustomAttribute3> ;
    sh:name "product custom attribute3" ;
    sh:description "Custom attribute 3 of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCustomAttribute0> ;
    sh:name "product sold custom attribute0" ;
    sh:description "Custom attribute 0 of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/year> ;
    sh:name "year" ;
    sh:description "Year, formatted as yyyy." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/externalConversionSource> ;
    sh:name "external conversion source" ;
    sh:description "External conversion source." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBPAGE" "ANALYTICS" "UPLOAD" "AD_CALL_METRICS" "WEBSITE_CALL_METRICS" "STORE_VISITS" "ANDROID_IN_APP" "IOS_IN_APP" "IOS_FIRST_OPEN" "APP_UNSPECIFIED" "ANDROID_FIRST_OPEN" "UPLOAD_CALLS" "FIREBASE" "CLICK_TO_CALL" "SALESFORCE" "STORE_SALES_CRM" "STORE_SALES_PAYMENT_NETWORK" "GOOGLE_PLAY" "THIRD_PARTY_APP_ANALYTICS" "GOOGLE_ATTRIBUTION" "STORE_SALES_DIRECT_UPLOAD" "STORE_SALES" "SEARCH_ADS_360" "GOOGLE_HOSTED" "FLOODLIGHT" "ANALYTICS_SEARCH_ADS_360" "FIREBASE_SEARCH_ADS_360" "DISPLAY_AND_VIDEO_360_FLOODLIGHT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldTitle> ;
    sh:name "product sold title" ;
    sh:description "Title of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productChannelExclusivity> ;
    sh:name "product channel exclusivity" ;
    sh:description "Channel exclusivity of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SINGLE_CHANNEL" "MULTI_CHANNEL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCustomAttribute3> ;
    sh:name "product sold custom attribute3" ;
    sh:description "Custom attribute 3 of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/travelDestinationCountry> ;
    sh:name "travel destination country" ;
    sh:description "The country the user is searching for at query time." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/searchTerm> ;
    sh:name "search term" ;
    sh:description "A search term." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCustomAttribute0> ;
    sh:name "product custom attribute0" ;
    sh:description "Custom attribute 0 of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/interactionOnThisExtension> ;
    sh:name "interaction on this extension" ;
    sh:description "Only used with feed item metrics. Indicates whether the interaction metrics occurred on the feed item itself or a different extension or ad unit." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkAttributionCredit> ;
    sh:name "sk ad network attribution credit" ;
    sh:description "iOS Store Kit Ad Network attribution credit" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNAVAILABLE" "WON" "CONTRIBUTED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/geoTargetMetro> ;
    sh:name "geo target metro" ;
    sh:description "Resource name of the geo target constant that represents a metro." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productMerchantId> ;
    sh:name "product merchant id" ;
    sh:description "Merchant ID of the product." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/activityCity> ;
    sh:name "activity city" ;
    sh:description "The city where the travel activity is available." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/skAdNetworkRedistributedFineConversionValue> ;
    sh:name "sk ad network redistributed fine conversion value" ;
    sh:description "iOS Store Kit Ad Network redistributed fine conversion value. Google uses modeling on observed conversion values(obtained from Apple) to calculate conversions from SKAN postbacks where NULLs are returned. This column represents the sum of the modeled conversion values and the observed conversion values. See https://support.google.com/google-ads/answer/14892597 to lean more." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productBrand> ;
    sh:name "product brand" ;
    sh:description "Brand of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionActionName> ;
    sh:name "conversion action name" ;
    sh:description "Conversion action name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/week> ;
    sh:name "week" ;
    sh:description "Week as defined as Monday through Sunday, and represented by the date of Monday. Formatted as yyyy-MM-dd." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCategoryLevel4> ;
    sh:name "product sold category level4" ;
    sh:description "Category (level 4) of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsListing> ;
    sh:name "vertical ads listing" ;
    sh:description "The listing associated with a listing impression, click or conversion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/conversionActionCategory> ;
    sh:name "conversion action category" ;
    sh:description "Conversion action category." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DEFAULT" "PAGE_VIEW" "PURCHASE" "SIGNUP" "DOWNLOAD" "ADD_TO_CART" "BEGIN_CHECKOUT" "SUBSCRIBE_PAID" "PHONE_CALL_LEAD" "IMPORTED_LEAD" "SUBMIT_LEAD_FORM" "BOOK_APPOINTMENT" "REQUEST_QUOTE" "GET_DIRECTIONS" "OUTBOUND_CLICK" "CONTACT" "ENGAGEMENT" "STORE_VISIT" "STORE_SALE" "QUALIFIED_LEAD" "CONVERTED_LEAD" "YOUTUBE_FOLLOW_ON_VIEWS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldCustomAttribute1> ;
    sh:name "product sold custom attribute1" ;
    sh:description "Custom attribute 1 of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productSoldBrand> ;
    sh:name "product sold brand" ;
    sh:description "Brand of the product sold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/verticalAdsListingUserRating> ;
    sh:name "vertical ads listing user rating" ;
    sh:description "Integer value specifying the user rating of the vertical ads listing as a number from 1 to 5, where 5 is the best. The value will always be within this range." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/hotelCheckInDayOfWeek> ;
    sh:name "hotel check in day of week" ;
    sh:description "Hotel check-in day of week." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Segments/productCustomAttribute1> ;
    sh:name "product custom attribute1" ;
    sh:description "Custom attribute 1 of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword
googleads:KeywordShape a sh:NodeShape ;
  sh:targetClass googleads:Keyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Keyword/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "The AdGroupCriterion resource name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Keyword/info> ;
    sh:name "info" ;
    sh:description "Keyword info." ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Sk Ad Network Source App
googleads:SkAdNetworkSourceAppShape a sh:NodeShape ;
  sh:targetClass googleads:SkAdNetworkSourceApp ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SkAdNetworkSourceApp/skAdNetworkSourceAppId> ;
    sh:name "sk ad network source app id" ;
    sh:description "App id where the ad that drove the iOS Store Kit Ad Network install was shown." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Plan Campaign
googleads:KeywordPlanCampaignShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordPlanCampaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/keywordPlan> ;
    sh:name "keyword plan" ;
    sh:description "The keyword plan this campaign belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/keywordPlanNetwork> ;
    sh:name "keyword plan network" ;
    sh:description "Targeting network. This field is required and should not be empty when creating Keyword Plan campaigns." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GOOGLE_SEARCH" "GOOGLE_SEARCH_AND_PARTNERS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the Keyword Plan campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/name> ;
    sh:name "name" ;
    sh:description "The name of the Keyword Plan campaign. This field is required and should not be empty when creating Keyword Plan campaigns." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/cpcBidMicros> ;
    sh:name "cpc bid micros" ;
    sh:description "A default max cpc bid in micros, and in the account currency, for all ad groups under the campaign. This field is required and should not be empty when creating Keyword Plan campaigns." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/geoTargets> ;
    sh:name "geo targets" ;
    sh:description "The geo targets. Max number allowed: 20." ;
    sh:node googleads:KeywordPlanGeoTargetShape ;
    sh:class googleads:KeywordPlanGeoTarget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Keyword Plan campaign. KeywordPlanCampaign resource names have the form: `customers/{customer_id}/keywordPlanCampaigns/{kp_campaign_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaign/languageConstants> ;
    sh:name "language constants" ;
    sh:description "The languages targeted for the Keyword Plan campaign. Max allowed: 1." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Keyword Plan Geo Target
googleads:KeywordPlanGeoTargetShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordPlanGeoTarget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanGeoTarget/geoTargetConstant> ;
    sh:name "geo target constant" ;
    sh:description "Required. The resource name of the geo target." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Group Content Suitability Placement View
googleads:GroupContentSuitabilityPlacementViewShape a sh:NodeShape ;
  sh:targetClass googleads:GroupContentSuitabilityPlacementView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupContentSuitabilityPlacementView/placementType> ;
    sh:name "placement type" ;
    sh:description "Output only. Represents the type of the placement, for example, Website, YouTubeVideo and MobileApplication." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "GOOGLE_PRODUCTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupContentSuitabilityPlacementView/placement> ;
    sh:name "placement" ;
    sh:description "Output only. The automatic placement string at group level, for example. website url, mobile application id, or a YouTube video id." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupContentSuitabilityPlacementView/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. The display name is URL for websites, YouTube video name for YouTube videos, and translated mobile app name for mobile apps." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupContentSuitabilityPlacementView/targetUrl> ;
    sh:name "target url" ;
    sh:description "Output only. URL of the placement, for example, website, link to the mobile application in app store, or a YouTube video URL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.GroupContentSuitabilityPlacementView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the group content suitability placement view. Group content suitability placement view resource names have the form: `customers/{customer_id}/groupContentSuitabilityPlacementViews/{placement_fingerprint}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Shopping Product
googleads:ShoppingProductShape a sh:NodeShape ;
  sh:targetClass googleads:ShoppingProduct ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/productTypeLevel3> ;
    sh:name "product type level3" ;
    sh:description "Output only. The product type level 3 as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/customAttribute3> ;
    sh:name "custom attribute3" ;
    sh:description "Output only. The custom attribute 3 of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/categoryLevel2> ;
    sh:name "category level2" ;
    sh:description "Output only. The category level 2 of the product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/channelExclusivity> ;
    sh:name "channel exclusivity" ;
    sh:description "Output only. The channel exclusivity of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SINGLE_CHANNEL" "MULTI_CHANNEL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/customAttribute0> ;
    sh:name "custom attribute0" ;
    sh:description "Output only. The custom attribute 0 of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/customAttribute4> ;
    sh:name "custom attribute4" ;
    sh:description "Output only. The custom attribute 4 of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/brand> ;
    sh:name "brand" ;
    sh:description "Output only. The brand of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Output only. The product feed label as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/categoryLevel4> ;
    sh:name "category level4" ;
    sh:description "Output only. The category level 4 of the product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/productTypeLevel4> ;
    sh:name "product type level4" ;
    sh:description "Output only. The product type level 4 as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/issues> ;
    sh:name "issues" ;
    sh:description "Output only. The list of issues affecting whether the product can show in ads. The value of this field is restricted to the scope specified in the query, see the documentation of the resource. This field can take up to 24 hours to update. This field is not supported for App campaigns." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ShoppingProductProductIssueShape ;
    sh:class googleads:ShoppingProductProductIssue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/status> ;
    sh:name "status" ;
    sh:description "Output only. The status that indicates whether the product can show in ads. The value of this field is restricted to the scope specified in the query, see the documentation of the resource. This field can take up to 24 hours to update. This field is not supported for App campaigns." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NOT_ELIGIBLE" "ELIGIBLE_LIMITED" "ELIGIBLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/multiClientAccountId> ;
    sh:name "multi client account id" ;
    sh:description "Output only. The id of the Multi Client Account of the merchant, if present." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/productTypeLevel5> ;
    sh:name "product type level5" ;
    sh:description "Output only. The product type level 5 as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Output only. The currency code as provided by the merchant, in ISO 4217 format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/merchantCenterId> ;
    sh:name "merchant center id" ;
    sh:description "Output only. The id of the merchant that owns the product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/languageCode> ;
    sh:name "language code" ;
    sh:description "Output only. The language code as provided by the merchant, in BCP 47 format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/categoryLevel1> ;
    sh:name "category level1" ;
    sh:description "Output only. The category level 1 of the product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. An ad group of a campaign that includes the product. This field is selectable only in the ad group scope, which requires an equality filter on `campaign` and `ad_group`." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the shopping product. Shopping product resource names have the form: `customers/{customer_id}/shoppingProducts/{merchant_center_id}~{channel}~{language_code}~{feed_label}~{item_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/productTypeLevel1> ;
    sh:name "product type level1" ;
    sh:description "Output only. The product type level 1 as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/effectiveMaxCpcMicros> ;
    sh:name "effective max cpc micros" ;
    sh:description "Output only. The effective maximum cost-per-click (effective max. CPC) of the product. This field is available only if the query specifies the campaign or ad group scope, and if the campaign uses manual bidding. The value is the highest bid set for the product in product groups across all enabled ad groups. It represents the most you're willing to pay for a click on the product. This field can take up to 24 hours to update." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/channel> ;
    sh:name "channel" ;
    sh:description "Output only. The product channel describing the locality of the product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ONLINE" "LOCAL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/productImageUri> ;
    sh:name "product image uri" ;
    sh:description "Output only. The URI of the product image as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/productTypeLevel2> ;
    sh:name "product type level2" ;
    sh:description "Output only. The product type level 2 as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/categoryLevel5> ;
    sh:name "category level5" ;
    sh:description "Output only. The category level 5 of the product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/itemId> ;
    sh:name "item id" ;
    sh:description "Output only. The item id of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/customAttribute1> ;
    sh:name "custom attribute1" ;
    sh:description "Output only. The custom attribute 1 of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/categoryLevel3> ;
    sh:name "category level3" ;
    sh:description "Output only. The category level 3 of the product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/condition> ;
    sh:name "condition" ;
    sh:description "Output only. The condition of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW" "REFURBISHED" "USED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/customAttribute2> ;
    sh:name "custom attribute2" ;
    sh:description "Output only. The custom attribute 2 of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. A campaign that includes the product. This field is selectable only in the campaign scope, which requires an equality filter on `campaign`." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/availability> ;
    sh:name "availability" ;
    sh:description "Output only. The availability of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IN_STOCK" "OUT_OF_STOCK" "PREORDER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/title> ;
    sh:name "title" ;
    sh:description "Output only. The title of the product as provided by the merchant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/priceMicros> ;
    sh:name "price micros" ;
    sh:description "Output only. The price of the product in micros as provided by the merchant, in the currency specified in `currency_code` (e.g. $2.97 is reported as 2970000)." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProduct/targetCountries> ;
    sh:name "target countries" ;
    sh:description "Output only. Upper-case two-letter ISO 3166-1 code of the regions where the product is intended to be shown in ads." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] .

# Shape for Shopping Product Product Issue
googleads:ShoppingProductProductIssueShape a sh:NodeShape ;
  sh:targetClass googleads:ShoppingProductProductIssue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProductProductIssue/affectedRegions> ;
    sh:name "affected regions" ;
    sh:description "Output only. List of upper-case two-letter ISO 3166-1 codes of the regions affected by the issue. If empty, all regions are affected." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProductProductIssue/errorCode> ;
    sh:name "error code" ;
    sh:description "Output only. The error code that identifies the issue." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProductProductIssue/attributeName> ;
    sh:name "attribute name" ;
    sh:description "Output only. The name of the product's attribute, if any, that triggered the issue." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProductProductIssue/description> ;
    sh:name "description" ;
    sh:description "Output only. The short description of the issue in English." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProductProductIssue/documentation> ;
    sh:name "documentation" ;
    sh:description "Output only. The URL of the Help Center article for the issue." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProductProductIssue/detail> ;
    sh:name "detail" ;
    sh:description "Output only. The detailed description of the issue in English." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingProductProductIssue/adsSeverity> ;
    sh:name "ads severity" ;
    sh:description "Output only. The severity of the issue in Google Ads." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WARNING" "ERROR" ) ;
  ] .

# Shape for Smart Campaign Search Term View
googleads:SmartCampaignSearchTermViewShape a sh:NodeShape ;
  sh:targetClass googleads:SmartCampaignSearchTermView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSearchTermView/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The Smart campaign the search term served in." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSearchTermView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Smart campaign search term view. Smart campaign search term view resource names have the form: `customers/{customer_id}/smartCampaignSearchTermViews/{campaign_id}~{URL-base64_search_term}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SmartCampaignSearchTermView/searchTerm> ;
    sh:name "search term" ;
    sh:description "Output only. The search term." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Offline Conversion Upload Conversion Action Summary
googleads:OfflineConversionUploadConversionActionSummaryShape a sh:NodeShape ;
  sh:targetClass googleads:OfflineConversionUploadConversionActionSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/jobSummaries> ;
    sh:name "job summaries" ;
    sh:description "Output only. Summary of history stats by last N jobs." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineConversionSummaryShape ;
    sh:class googleads:OfflineConversionSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/conversionActionId> ;
    sh:name "conversion action id" ;
    sh:description "Output only. Conversion action id." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/successfulEventCount> ;
    sh:name "successful event count" ;
    sh:description "Output only. Total count of successful uploaded events." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/alerts> ;
    sh:name "alerts" ;
    sh:description "Output only. Details for each error code. Alerts are generated from most recent calendar day with upload stats." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineConversionAlertShape ;
    sh:class googleads:OfflineConversionAlert ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/lastUploadDateTime> ;
    sh:name "last upload date time" ;
    sh:description "Output only. Date for the latest upload batch. The format is \"yyyy-mm-dd hh:mm:ss\", and it's in the time zone of the Google Ads account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/client> ;
    sh:name "client" ;
    sh:description "Output only. Client type of the upload event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GOOGLE_ADS_API" "GOOGLE_ADS_WEB_CLIENT" "ADS_DATA_CONNECTOR" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/pendingEventCount> ;
    sh:name "pending event count" ;
    sh:description "Output only. Total count of pending uploaded events." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/status> ;
    sh:name "status" ;
    sh:description "Output only. Overall status for offline conversion upload conversion action summary. Status is generated from most recent calendar day with upload stats." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXCELLENT" "GOOD" "NEEDS_ATTENTION" "NO_RECENT_UPLOAD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/dailySummaries> ;
    sh:name "daily summaries" ;
    sh:description "Output only. Summary of history stats by last N days." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineConversionSummaryShape ;
    sh:class googleads:OfflineConversionSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/conversionActionName> ;
    sh:name "conversion action name" ;
    sh:description "Output only. The name of the conversion action." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/totalEventCount> ;
    sh:name "total event count" ;
    sh:description "Output only. Total count of uploaded events." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadConversionActionSummary/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the offline conversion upload summary at conversion action level. Offline conversion upload conversion action summary resource names have the form: `customers/{customer_id}/offlineConversionUploadConversionActionSummaries/{conversion_action_id}~{client}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Offline Conversion Summary
googleads:OfflineConversionSummaryShape a sh:NodeShape ;
  sh:targetClass googleads:OfflineConversionSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionSummary/failedCount> ;
    sh:name "failed count" ;
    sh:description "Output only. Total count of failed event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionSummary/successfulCount> ;
    sh:name "successful count" ;
    sh:description "Output only. Total count of successful event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionSummary/pendingCount> ;
    sh:name "pending count" ;
    sh:description "Output only. Total count of pending uploaded event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionSummary/jobId> ;
    sh:name "job id" ;
    sh:description "Output only. Dimension key for last N jobs." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionSummary/uploadDate> ;
    sh:name "upload date" ;
    sh:description "Output only. Dimension key for last N days." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Offline Conversion Alert
googleads:OfflineConversionAlertShape a sh:NodeShape ;
  sh:targetClass googleads:OfflineConversionAlert ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionAlert/error> ;
    sh:name "error" ;
    sh:description "Output only. Error for offline conversion client alert." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineConversionErrorShape ;
    sh:class googleads:OfflineConversionError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionAlert/errorPercentage> ;
    sh:name "error percentage" ;
    sh:description "Output only. Percentage of the error, the range of this field should be [0, 1.0]." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Offline Conversion Error
googleads:OfflineConversionErrorShape a sh:NodeShape ;
  sh:targetClass googleads:OfflineConversionError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/mutateError> ;
    sh:name "mutate error" ;
    sh:description "Output only. Mutate error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "RESOURCE_NOT_FOUND" "ID_EXISTS_IN_MULTIPLE_MUTATES" "INCONSISTENT_FIELD_VALUES" "MUTATE_NOT_ALLOWED" "RESOURCE_NOT_IN_GOOGLE_ADS" "RESOURCE_ALREADY_EXISTS" "RESOURCE_DOES_NOT_SUPPORT_VALIDATE_ONLY" "OPERATION_DOES_NOT_SUPPORT_PARTIAL_FAILURE" "RESOURCE_READ_ONLY" "EU_POLITICAL_ADVERTISING_DECLARATION_REQUIRED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/stringLengthError> ;
    sh:name "string length error" ;
    sh:description "Output only. String length error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EMPTY" "TOO_SHORT" "TOO_LONG" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/collectionSizeError> ;
    sh:name "collection size error" ;
    sh:description "Output only. Collection size error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TOO_FEW" "TOO_MANY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/stringFormatError> ;
    sh:name "string format error" ;
    sh:description "Output only. String format error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ILLEGAL_CHARS" "INVALID_FORMAT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/conversionUploadError> ;
    sh:name "conversion upload error" ;
    sh:description "Output only. Conversion upload error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TOO_MANY_CONVERSIONS_IN_REQUEST" "UNPARSEABLE_GCLID" "CONVERSION_PRECEDES_EVENT" "EXPIRED_EVENT" "TOO_RECENT_EVENT" "EVENT_NOT_FOUND" "UNAUTHORIZED_CUSTOMER" "TOO_RECENT_CONVERSION_ACTION" "CONVERSION_TRACKING_NOT_ENABLED_AT_IMPRESSION_TIME" "EXTERNAL_ATTRIBUTION_DATA_SET_FOR_NON_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION" "EXTERNAL_ATTRIBUTION_DATA_NOT_SET_FOR_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION" "ORDER_ID_NOT_PERMITTED_FOR_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION" "ORDER_ID_ALREADY_IN_USE" "DUPLICATE_ORDER_ID" "TOO_RECENT_CALL" "EXPIRED_CALL" "CALL_NOT_FOUND" "CONVERSION_PRECEDES_CALL" "CONVERSION_TRACKING_NOT_ENABLED_AT_CALL_TIME" "UNPARSEABLE_CALLERS_PHONE_NUMBER" "CLICK_CONVERSION_ALREADY_EXISTS" "CALL_CONVERSION_ALREADY_EXISTS" "DUPLICATE_CLICK_CONVERSION_IN_REQUEST" "DUPLICATE_CALL_CONVERSION_IN_REQUEST" "CUSTOM_VARIABLE_NOT_ENABLED" "CUSTOM_VARIABLE_VALUE_CONTAINS_PII" "INVALID_CUSTOMER_FOR_CLICK" "INVALID_CUSTOMER_FOR_CALL" "CONVERSION_NOT_COMPLIANT_WITH_ATT_POLICY" "CLICK_NOT_FOUND" "INVALID_USER_IDENTIFIER" "EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION_NOT_PERMITTED_WITH_USER_IDENTIFIER" "UNSUPPORTED_USER_IDENTIFIER" "GBRAID_WBRAID_BOTH_SET" "UNPARSEABLE_WBRAID" "UNPARSEABLE_GBRAID" "ONE_PER_CLICK_CONVERSION_ACTION_NOT_PERMITTED_WITH_BRAID" "CUSTOMER_DATA_POLICY_PROHIBITS_ENHANCED_CONVERSIONS" "CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS" "ORDER_ID_CONTAINS_PII" "CUSTOMER_NOT_ENABLED_ENHANCED_CONVERSIONS_FOR_LEADS" "INVALID_JOB_ID" "NO_CONVERSION_ACTION_FOUND" "INVALID_CONVERSION_ACTION_TYPE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/dateError> ;
    sh:name "date error" ;
    sh:description "Output only. Date error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INVALID_FIELD_VALUES_IN_DATE" "INVALID_FIELD_VALUES_IN_DATE_TIME" "INVALID_STRING_DATE" "INVALID_STRING_DATE_TIME_MICROS" "INVALID_STRING_DATE_TIME_SECONDS" "INVALID_STRING_DATE_TIME_SECONDS_WITH_OFFSET" "EARLIER_THAN_MINIMUM_DATE" "LATER_THAN_MAXIMUM_DATE" "DATE_RANGE_MINIMUM_DATE_LATER_THAN_MAXIMUM_DATE" "DATE_RANGE_MINIMUM_AND_MAXIMUM_DATES_BOTH_NULL" "DATE_RANGE_ERROR_START_TIME_MUST_BE_THE_START_OF_A_DAY" "DATE_RANGE_ERROR_END_TIME_MUST_BE_THE_END_OF_A_DAY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/notAllowlistedError> ;
    sh:name "not allowlisted error" ;
    sh:description "Output only. Not allowlisted error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/fieldError> ;
    sh:name "field error" ;
    sh:description "Output only. Field error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REQUIRED" "IMMUTABLE_FIELD" "INVALID_VALUE" "VALUE_MUST_BE_UNSET" "REQUIRED_NONEMPTY_LIST" "FIELD_CANNOT_BE_CLEARED" "BLOCKED_VALUE" "FIELD_CAN_ONLY_BE_CLEARED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/conversionAdjustmentUploadError> ;
    sh:name "conversion adjustment upload error" ;
    sh:description "Output only. Conversion adjustment upload error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "TOO_RECENT_CONVERSION_ACTION" "CONVERSION_ALREADY_RETRACTED" "CONVERSION_NOT_FOUND" "CONVERSION_EXPIRED" "ADJUSTMENT_PRECEDES_CONVERSION" "MORE_RECENT_RESTATEMENT_FOUND" "TOO_RECENT_CONVERSION" "CANNOT_RESTATE_CONVERSION_ACTION_THAT_ALWAYS_USES_DEFAULT_CONVERSION_VALUE" "TOO_MANY_ADJUSTMENTS_IN_REQUEST" "TOO_MANY_ADJUSTMENTS" "RESTATEMENT_ALREADY_EXISTS" "DUPLICATE_ADJUSTMENT_IN_REQUEST" "CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS" "CONVERSION_ACTION_NOT_ELIGIBLE_FOR_ENHANCEMENT" "INVALID_USER_IDENTIFIER" "UNSUPPORTED_USER_IDENTIFIER" "GCLID_DATE_TIME_PAIR_AND_ORDER_ID_BOTH_SET" "CONVERSION_ALREADY_ENHANCED" "DUPLICATE_ENHANCEMENT_IN_REQUEST" "CUSTOMER_DATA_POLICY_PROHIBITS_ENHANCEMENT" "MISSING_ORDER_ID_FOR_WEBPAGE" "ORDER_ID_CONTAINS_PII" "INVALID_JOB_ID" "NO_CONVERSION_ACTION_FOUND" "INVALID_CONVERSION_ACTION_TYPE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionError/distinctError> ;
    sh:name "distinct error" ;
    sh:description "Output only. Distinct error." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DUPLICATE_ELEMENT" "DUPLICATE_TYPE" ) ;
  ] .

# Shape for Product Group View
googleads:ProductGroupViewShape a sh:NodeShape ;
  sh:targetClass googleads:ProductGroupView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductGroupView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the product group view. Product group view resource names have the form: `customers/{customer_id}/productGroupViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Third Party App Analytics Link
googleads:ThirdPartyAppAnalyticsLinkShape a sh:NodeShape ;
  sh:targetClass googleads:ThirdPartyAppAnalyticsLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ThirdPartyAppAnalyticsLink/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the third party app analytics link. Third party app analytics link resource names have the form: `customers/{customer_id}/thirdPartyAppAnalyticsLinks/{account_link_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ThirdPartyAppAnalyticsLink/shareableLinkId> ;
    sh:name "shareable link id" ;
    sh:description "Output only. The shareable link ID that should be provided to the third party when setting up app analytics. This is able to be regenerated using regenerate method in the ThirdPartyAppAnalyticsLinkService." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Location Interest View
googleads:LocationInterestViewShape a sh:NodeShape ;
  sh:targetClass googleads:LocationInterestView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationInterestView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the location interest view. Location interest view resource names have the form: `customers/{customer_id}/locationInterestViews/{campaign_id}~{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Submission Data
googleads:LeadFormSubmissionDataShape a sh:NodeShape ;
  sh:targetClass googleads:LeadFormSubmissionData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/asset> ;
    sh:name "asset" ;
    sh:description "Output only. Asset associated with the submitted lead form." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/adGroupAd> ;
    sh:name "ad group ad" ;
    sh:description "Output only. AdGroupAd associated with the submitted lead form." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/customLeadFormSubmissionFields> ;
    sh:name "custom lead form submission fields" ;
    sh:description "Output only. Submission data associated with a custom lead form." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomLeadFormSubmissionFieldShape ;
    sh:class googleads:CustomLeadFormSubmissionField ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. AdGroup associated with the submitted lead form." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/submissionDateTime> ;
    sh:name "submission date time" ;
    sh:description "Output only. The date and time at which the lead form was submitted. The format is \"yyyy-mm-dd hh:mm:ss+|-hh:mm\", for example, \"2019-01-01 12:32:45-08:00\"." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the lead form submission data. Lead form submission data resource names have the form: `customers/{customer_id}/leadFormSubmissionData/{lead_form_submission_data_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/leadFormSubmissionFields> ;
    sh:name "lead form submission fields" ;
    sh:description "Output only. Submission data associated with a lead form." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LeadFormSubmissionFieldShape ;
    sh:class googleads:LeadFormSubmissionField ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/gclid> ;
    sh:name "gclid" ;
    sh:description "Output only. Google Click Id associated with the submissed lead form." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. Campaign associated with the submitted lead form." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionData/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of this lead form submission." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Submission Field
googleads:LeadFormSubmissionFieldShape a sh:NodeShape ;
  sh:targetClass googleads:LeadFormSubmissionField ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionField/fieldType> ;
    sh:name "field type" ;
    sh:description "Output only. Field type for lead form fields." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "FULL_NAME" "EMAIL" "PHONE_NUMBER" "POSTAL_CODE" "STREET_ADDRESS" "CITY" "REGION" "COUNTRY" "WORK_EMAIL" "COMPANY_NAME" "WORK_PHONE" "JOB_TITLE" "GOVERNMENT_ISSUED_ID_CPF_BR" "GOVERNMENT_ISSUED_ID_DNI_AR" "GOVERNMENT_ISSUED_ID_DNI_PE" "GOVERNMENT_ISSUED_ID_RUT_CL" "GOVERNMENT_ISSUED_ID_CC_CO" "GOVERNMENT_ISSUED_ID_CI_EC" "GOVERNMENT_ISSUED_ID_RFC_MX" "FIRST_NAME" "LAST_NAME" "VEHICLE_MODEL" "VEHICLE_TYPE" "PREFERRED_DEALERSHIP" "VEHICLE_PURCHASE_TIMELINE" "VEHICLE_OWNERSHIP" "VEHICLE_PAYMENT_TYPE" "VEHICLE_CONDITION" "COMPANY_SIZE" "ANNUAL_SALES" "YEARS_IN_BUSINESS" "JOB_DEPARTMENT" "JOB_ROLE" "OVER_18_AGE" "OVER_19_AGE" "OVER_20_AGE" "OVER_21_AGE" "OVER_22_AGE" "OVER_23_AGE" "OVER_24_AGE" "OVER_25_AGE" "OVER_26_AGE" "OVER_27_AGE" "OVER_28_AGE" "OVER_29_AGE" "OVER_30_AGE" "OVER_31_AGE" "OVER_32_AGE" "OVER_33_AGE" "OVER_34_AGE" "OVER_35_AGE" "OVER_36_AGE" "OVER_37_AGE" "OVER_38_AGE" "OVER_39_AGE" "OVER_40_AGE" "OVER_41_AGE" "OVER_42_AGE" "OVER_43_AGE" "OVER_44_AGE" "OVER_45_AGE" "OVER_46_AGE" "OVER_47_AGE" "OVER_48_AGE" "OVER_49_AGE" "OVER_50_AGE" "OVER_51_AGE" "OVER_52_AGE" "OVER_53_AGE" "OVER_54_AGE" "OVER_55_AGE" "OVER_56_AGE" "OVER_57_AGE" "OVER_58_AGE" "OVER_59_AGE" "OVER_60_AGE" "OVER_61_AGE" "OVER_62_AGE" "OVER_63_AGE" "OVER_64_AGE" "OVER_65_AGE" "EDUCATION_PROGRAM" "EDUCATION_COURSE" "PRODUCT" "SERVICE" "OFFER" "CATEGORY" "PREFERRED_CONTACT_METHOD" "PREFERRED_LOCATION" "PREFERRED_CONTACT_TIME" "PURCHASE_TIMELINE" "YEARS_OF_EXPERIENCE" "JOB_INDUSTRY" "LEVEL_OF_EDUCATION" "PROPERTY_TYPE" "REALTOR_HELP_GOAL" "PROPERTY_COMMUNITY" "PRICE_RANGE" "NUMBER_OF_BEDROOMS" "FURNISHED_PROPERTY" "PETS_ALLOWED_PROPERTY" "NEXT_PLANNED_PURCHASE" "EVENT_SIGNUP_INTEREST" "PREFERRED_SHOPPING_PLACES" "FAVORITE_BRAND" "TRANSPORTATION_COMMERCIAL_LICENSE_TYPE" "EVENT_BOOKING_INTEREST" "DESTINATION_COUNTRY" "DESTINATION_CITY" "DEPARTURE_COUNTRY" "DEPARTURE_CITY" "DEPARTURE_DATE" "RETURN_DATE" "NUMBER_OF_TRAVELERS" "TRAVEL_BUDGET" "TRAVEL_ACCOMMODATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LeadFormSubmissionField/fieldValue> ;
    sh:name "field value" ;
    sh:description "Output only. Field value for lead form fields." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Life Event
googleads:LifeEventShape a sh:NodeShape ;
  sh:targetClass googleads:LifeEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEvent/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the life event. Life event resource names have the form: `customers/{customer_id}/lifeEvents/{life_event_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEvent/availabilities> ;
    sh:name "availabilities" ;
    sh:description "Output only. Availability information of the life event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CriterionCategoryAvailabilityShape ;
    sh:class googleads:CriterionCategoryAvailability ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEvent/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the life event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEvent/name> ;
    sh:name "name" ;
    sh:description "Output only. The name of the life event, for example,\"Recently Moved\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEvent/parent> ;
    sh:name "parent" ;
    sh:description "Output only. The parent of the life_event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LifeEvent/launchedToAll> ;
    sh:name "launched to all" ;
    sh:description "Output only. True if the life event is launched to all channels and locales." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Plan Campaign Keyword
googleads:KeywordPlanCampaignKeywordShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordPlanCampaignKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaignKeyword/keywordPlanCampaign> ;
    sh:name "keyword plan campaign" ;
    sh:description "The Keyword Plan campaign to which this negative keyword belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaignKeyword/matchType> ;
    sh:name "match type" ;
    sh:description "The keyword match type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXACT" "PHRASE" "BROAD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaignKeyword/negative> ;
    sh:name "negative" ;
    sh:description "Immutable. If true, the keyword is negative. Must be set to true. Only negative campaign keywords are supported." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaignKeyword/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Keyword Plan Campaign keyword. KeywordPlanCampaignKeyword resource names have the form: `customers/{customer_id}/keywordPlanCampaignKeywords/{kp_campaign_keyword_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaignKeyword/text> ;
    sh:name "text" ;
    sh:description "The keyword text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanCampaignKeyword/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the Keyword Plan negative keyword." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for User Interest
googleads:UserInterestShape a sh:NodeShape ;
  sh:targetClass googleads:UserInterest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterest/taxonomyType> ;
    sh:name "taxonomy type" ;
    sh:description "Output only. Taxonomy type of the user interest." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "AFFINITY" "IN_MARKET" "MOBILE_APP_INSTALL_USER" "VERTICAL_GEO" "NEW_SMART_PHONE_USER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterest/userInterestId> ;
    sh:name "user interest id" ;
    sh:description "Output only. The ID of the user interest." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterest/userInterestParent> ;
    sh:name "user interest parent" ;
    sh:description "Output only. The parent of the user interest." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterest/availabilities> ;
    sh:name "availabilities" ;
    sh:description "Output only. Availability information of the user interest." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CriterionCategoryAvailabilityShape ;
    sh:class googleads:CriterionCategoryAvailability ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterest/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the user interest. User interest resource names have the form: `customers/{customer_id}/userInterests/{user_interest_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterest/launchedToAll> ;
    sh:name "launched to all" ;
    sh:description "Output only. True if the user interest is launched to all channels and locales." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserInterest/name> ;
    sh:name "name" ;
    sh:description "Output only. The name of the user interest." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for You Tube Video Upload
googleads:YouTubeVideoUploadShape a sh:NodeShape ;
  sh:targetClass googleads:YouTubeVideoUpload ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/state> ;
    sh:name "state" ;
    sh:description "Output only. The current state of the YouTube video upload." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "UPLOADED" "PROCESSED" "FAILED" "REJECTED" "UNAVAILABLE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/videoPrivacy> ;
    sh:name "video privacy" ;
    sh:description "The privacy state of the video. Only mutable for videos uploaded to the advertiser owned (brand) YouTube channel. For videos uploaded to the Google-managed channels only UNLISTED privacy is allowed. Defaults to UNLISTED privacy if not specified." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PUBLIC" "UNLISTED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/videoTitle> ;
    sh:name "video title" ;
    sh:description "Input only. Immutable. The title of the video. Only mutable on YouTube video upload creation. Immutable after creation." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Resource name of the YouTube video upload." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/videoDescription> ;
    sh:name "video description" ;
    sh:description "Input only. Immutable. The description of the video. Only mutable on YouTube video upload creation. Immutable after creation." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/videoId> ;
    sh:name "video id" ;
    sh:description "Output only. The YouTube video ID of the uploaded video." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/videoUploadId> ;
    sh:name "video upload id" ;
    sh:description "Output only. The unique ID of the YouTube video upload." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.YouTubeVideoUpload/channelId> ;
    sh:name "channel id" ;
    sh:description "Immutable. The destination YouTube channel ID for the video upload. Only mutable on YouTube video upload creation. If omitted, the video will be uploaded to the Google-managed YouTube channel associated with the Ads account." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Category Constant
googleads:ProductCategoryConstantShape a sh:NodeShape ;
  sh:targetClass googleads:ProductCategoryConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstant/productCategoryConstantParent> ;
    sh:name "product category constant parent" ;
    sh:description "Output only. Resource name of the parent product category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstant/level> ;
    sh:name "level" ;
    sh:description "Output only. Level of the product category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LEVEL1" "LEVEL2" "LEVEL3" "LEVEL4" "LEVEL5" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstant/categoryId> ;
    sh:name "category id" ;
    sh:description "Output only. The ID of the product category. This ID is equivalent to the google_product_category ID as described in this article: https://support.google.com/merchants/answer/6324436." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstant/localizations> ;
    sh:name "localizations" ;
    sh:description "Output only. List of all available localizations of the product category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ProductCategoryConstantProductCategoryLocalizationShape ;
    sh:class googleads:ProductCategoryConstantProductCategoryLocalization ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the product category. Product category resource names have the form: `productCategoryConstants/{level}~{category_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstant/state> ;
    sh:name "state" ;
    sh:description "Output only. State of the product category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "OBSOLETE" ) ;
  ] .

# Shape for Product Category Constant Product Category Localization
googleads:ProductCategoryConstantProductCategoryLocalizationShape a sh:NodeShape ;
  sh:targetClass googleads:ProductCategoryConstantProductCategoryLocalization ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstantProductCategoryLocalization/regionCode> ;
    sh:name "region code" ;
    sh:description "Output only. Upper-case two-letter ISO 3166-1 country code of the localized category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstantProductCategoryLocalization/languageCode> ;
    sh:name "language code" ;
    sh:description "Output only. Two-letter ISO 639-1 language code of the localized category." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductCategoryConstantProductCategoryLocalization/value> ;
    sh:name "value" ;
    sh:description "Output only. The name of the category in the specified locale." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Subscription
googleads:RecommendationSubscriptionShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationSubscription ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationSubscription/status> ;
    sh:name "status" ;
    sh:description "Required. Status of the subscription, either enabled or paused." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "PAUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationSubscription/modifyDateTime> ;
    sh:name "modify date time" ;
    sh:description "Output only. Contains the time in microseconds, when the Recommendation Subscription was last updated. The datetime is in the customer's time zone and in \"yyyy-MM-dd HH:mm:ss.ssssss\" format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationSubscription/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the recommendation subscription. `customers/{customer_id}/recommendationSubscriptions/{recommendation_type}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationSubscription/type> ;
    sh:name "type" ;
    sh:description "Required. Immutable. The type of recommendation subscribed to." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BUDGET" "KEYWORD" "TEXT_AD" "TARGET_CPA_OPT_IN" "MAXIMIZE_CONVERSIONS_OPT_IN" "ENHANCED_CPC_OPT_IN" "SEARCH_PARTNERS_OPT_IN" "MAXIMIZE_CLICKS_OPT_IN" "OPTIMIZE_AD_ROTATION" "KEYWORD_MATCH_TYPE" "MOVE_UNUSED_BUDGET" "FORECASTING_CAMPAIGN_BUDGET" "TARGET_ROAS_OPT_IN" "RESPONSIVE_SEARCH_AD" "MARGINAL_ROI_CAMPAIGN_BUDGET" "USE_BROAD_MATCH_KEYWORD" "RESPONSIVE_SEARCH_AD_ASSET" "UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX" "RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH" "DISPLAY_EXPANSION_OPT_IN" "UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX" "RAISE_TARGET_CPA_BID_TOO_LOW" "FORECASTING_SET_TARGET_ROAS" "CALLOUT_ASSET" "SITELINK_ASSET" "CALL_ASSET" "SHOPPING_ADD_AGE_GROUP" "SHOPPING_ADD_COLOR" "SHOPPING_ADD_GENDER" "SHOPPING_ADD_GTIN" "SHOPPING_ADD_MORE_IDENTIFIERS" "SHOPPING_ADD_SIZE" "SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN" "SHOPPING_FIX_DISAPPROVED_PRODUCTS" "SHOPPING_TARGET_ALL_OFFERS" "SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT" "SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING" "SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX" "DYNAMIC_IMAGE_EXTENSION_OPT_IN" "RAISE_TARGET_CPA" "LOWER_TARGET_ROAS" "PERFORMANCE_MAX_OPT_IN" "IMPROVE_PERFORMANCE_MAX_AD_STRENGTH" "MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX" "FORECASTING_SET_TARGET_CPA" "SET_TARGET_CPA" "SET_TARGET_ROAS" "MAXIMIZE_CONVERSION_VALUE_OPT_IN" "IMPROVE_GOOGLE_TAG_COVERAGE" "PERFORMANCE_MAX_FINAL_URL_OPT_IN" "REFRESH_CUSTOMER_MATCH_LIST" "CUSTOM_AUDIENCE_OPT_IN" "LEAD_FORM_ASSET" "IMPROVE_DEMAND_GEN_AD_STRENGTH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationSubscription/createDateTime> ;
    sh:name "create date time" ;
    sh:description "Output only. Time in seconds when the subscription was first created. The datetime is in the customer's time zone and in \"yyyy-MM-dd HH:mm:ss\" format." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Media File
googleads:MediaFileShape a sh:NodeShape ;
  sh:targetClass googleads:MediaFile ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the media file." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/mimeType> ;
    sh:name "mime type" ;
    sh:description "Output only. The mime type of the media file." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IMAGE_JPEG" "IMAGE_GIF" "IMAGE_PNG" "FLASH" "TEXT_HTML" "PDF" "MSWORD" "MSEXCEL" "RTF" "AUDIO_WAV" "AUDIO_MP3" "HTML5_AD_ZIP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/type> ;
    sh:name "type" ;
    sh:description "Immutable. Type of the media file." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "IMAGE" "ICON" "MEDIA_BUNDLE" "AUDIO" "VIDEO" "DYNAMIC_IMAGE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the media file. Media file resource names have the form: `customers/{customer_id}/mediaFiles/{media_file_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/image> ;
    sh:name "image" ;
    sh:description "Immutable. Encapsulates an Image." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MediaImageShape ;
    sh:class googleads:MediaImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/mediaBundle> ;
    sh:name "media bundle" ;
    sh:description "Immutable. A ZIP archive media the content of which contains HTML5 assets." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MediaBundleShape ;
    sh:class googleads:MediaBundle ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/audio> ;
    sh:name "audio" ;
    sh:description "Output only. Encapsulates an Audio." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:MediaAudioShape ;
    sh:class googleads:MediaAudio ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/name> ;
    sh:name "name" ;
    sh:description "Immutable. The name of the media file. The name can be used by clients to help identify previously uploaded media." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/video> ;
    sh:name "video" ;
    sh:description "Immutable. Encapsulates a Video." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MediaVideoShape ;
    sh:class googleads:MediaVideo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/fileSize> ;
    sh:name "file size" ;
    sh:description "Output only. The size of the media file in bytes." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaFile/sourceUrl> ;
    sh:name "source url" ;
    sh:description "Immutable. The URL of where the original media file was downloaded from (or a file name). Only used for media of type AUDIO and IMAGE." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Media Image
googleads:MediaImageShape a sh:NodeShape ;
  sh:targetClass googleads:MediaImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaImage/data> ;
    sh:name "data" ;
    sh:description "Immutable. Raw image data." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaImage/fullSizeImageUrl> ;
    sh:name "full size image url" ;
    sh:description "Output only. The url to the full size version of the image." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaImage/previewSizeImageUrl> ;
    sh:name "preview size image url" ;
    sh:description "Output only. The url to the preview size version of the image." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Media Bundle
googleads:MediaBundleShape a sh:NodeShape ;
  sh:targetClass googleads:MediaBundle ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaBundle/data> ;
    sh:name "data" ;
    sh:description "Immutable. Raw zipped data." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaBundle/url> ;
    sh:name "url" ;
    sh:description "Output only. The url to access the uploaded zipped data. For example, https://tpc.googlesyndication.com/simgad/123 This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Media Audio
googleads:MediaAudioShape a sh:NodeShape ;
  sh:targetClass googleads:MediaAudio ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaAudio/adDurationMillis> ;
    sh:name "ad duration millis" ;
    sh:description "Output only. The duration of the Audio in milliseconds." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Media Video
googleads:MediaVideoShape a sh:NodeShape ;
  sh:targetClass googleads:MediaVideo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaVideo/advertisingIdCode> ;
    sh:name "advertising id code" ;
    sh:description "Output only. The Advertising Digital Identification code for this video, as defined by the American Association of Advertising Agencies, used mainly for television commercials." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaVideo/adDurationMillis> ;
    sh:name "ad duration millis" ;
    sh:description "Output only. The duration of the Video in milliseconds." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaVideo/youtubeVideoId> ;
    sh:name "youtube video id" ;
    sh:description "Immutable. The YouTube video ID (as seen in YouTube URLs). Adding prefix \"https://www.youtube.com/watch?v=\" to this ID will get the YouTube streaming URL for this video." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MediaVideo/isciCode> ;
    sh:name "isci code" ;
    sh:description "Output only. The Industry Standard Commercial Identifier code for this video, used mainly for television commercials." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Operating System Version Constant
googleads:OperatingSystemVersionConstantShape a sh:NodeShape ;
  sh:targetClass googleads:OperatingSystemVersionConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OperatingSystemVersionConstant/osMinorVersion> ;
    sh:name "os minor version" ;
    sh:description "Output only. The OS Minor Version number." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OperatingSystemVersionConstant/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the operating system version." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OperatingSystemVersionConstant/name> ;
    sh:name "name" ;
    sh:description "Output only. Name of the operating system." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OperatingSystemVersionConstant/osMajorVersion> ;
    sh:name "os major version" ;
    sh:description "Output only. The OS Major Version number." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OperatingSystemVersionConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the operating system version constant. Operating system version constant resource names have the form: `operatingSystemVersionConstants/{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OperatingSystemVersionConstant/operatorType> ;
    sh:name "operator type" ;
    sh:description "Output only. Determines whether this constant represents a single version or a range of versions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EQUALS_TO" "GREATER_THAN_EQUALS_TO" ) ;
  ] .

# Shape for Managed Placement View
googleads:ManagedPlacementViewShape a sh:NodeShape ;
  sh:targetClass googleads:ManagedPlacementView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ManagedPlacementView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Managed Placement view. Managed placement view resource names have the form: `customers/{customer_id}/managedPlacementViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Multi Party Auth Review
googleads:MultiPartyAuthReviewShape a sh:NodeShape ;
  sh:targetClass googleads:MultiPartyAuthReview ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Multi-Party Authentication review. Resource names have the form: `customers/{customer_id}/multiPartyAuthReviews/{multi_party_auth_review_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/operationType> ;
    sh:name "operation type" ;
    sh:description "Output only. The operation type of the Multi-Party Authorization review." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CREATE" "UPDATE" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/customerUserAccessReview> ;
    sh:name "customer user access review" ;
    sh:description "Output only. The CustomerUserAccess details." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomerUserAccessReviewShape ;
    sh:class googleads:CustomerUserAccessReview ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/approvalDateTime> ;
    sh:name "approval date time" ;
    sh:description "Output only. The approval date and time of the Multi-Party Authorization review." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/reviewStatus> ;
    sh:name "review status" ;
    sh:description "Output only. The status of the Multi-Party Authorization review." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "APPROVED" "PENDING" "REVOKED" "REJECTED" "EXPIRED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/customerUserAccessInvitationReview> ;
    sh:name "customer user access invitation review" ;
    sh:description "Output only. The CustomerUserAccessInvitation details." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CustomerUserAccessInvitationReviewShape ;
    sh:class googleads:CustomerUserAccessInvitationReview ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/targetResource> ;
    sh:name "target resource" ;
    sh:description "Output only. The target resource for which Multi-Party Authorization is requested." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CUSTOMER_USER_ACCESS" "CUSTOMER_USER_ACCESS_INVITATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/multiPartyAuthReviewId> ;
    sh:name "multi party auth review id" ;
    sh:description "Output only. The ID of the Multi-Party Authorization review." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/requestUserEmail> ;
    sh:name "request user email" ;
    sh:description "Output only. The email of the user who requested the Multi-Party Authorization review" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. The creation date and time of the Multi-Party Authorization review." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MultiPartyAuthReview/justification> ;
    sh:name "justification" ;
    sh:description "Output only. The justification for the Multi-Party Authorization review request given by the requester." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Webpage View
googleads:WebpageViewShape a sh:NodeShape ;
  sh:targetClass googleads:WebpageView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.WebpageView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the webpage view. Webpage view resource names have the form: `customers/{customer_id}/webpageViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Plan Ad Group
googleads:KeywordPlanAdGroupShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordPlanAdGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroup/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the keyword plan ad group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroup/name> ;
    sh:name "name" ;
    sh:description "The name of the keyword plan ad group. This field is required and should not be empty when creating keyword plan ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroup/cpcBidMicros> ;
    sh:name "cpc bid micros" ;
    sh:description "A default ad group max cpc bid in micros in account currency for all biddable keywords under the keyword plan ad group. If not set, will inherit from parent campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroup/keywordPlanCampaign> ;
    sh:name "keyword plan campaign" ;
    sh:description "The keyword plan campaign to which this ad group belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroup/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Keyword Planner ad group. KeywordPlanAdGroup resource names have the form: `customers/{customer_id}/keywordPlanAdGroups/{kp_ad_group_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Topic Constant
googleads:TopicConstantShape a sh:NodeShape ;
  sh:targetClass googleads:TopicConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TopicConstant/path> ;
    sh:name "path" ;
    sh:description "Output only. The category to target or exclude. Each subsequent element in the array describes a more specific sub-category. For example, {\"Pets & Animals\", \"Pets\", \"Dogs\"} represents the \"Pets & Animals/Pets/Dogs\" category. List of available topic categories at https://developers.google.com/google-ads/api/reference/data/verticals" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TopicConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the topic constant. topic constant resource names have the form: `topicConstants/{topic_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TopicConstant/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the topic." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TopicConstant/topicConstantParent> ;
    sh:name "topic constant parent" ;
    sh:description "Output only. Resource name of parent of the topic constant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Offline Conversion Upload Client Summary
googleads:OfflineConversionUploadClientSummaryShape a sh:NodeShape ;
  sh:targetClass googleads:OfflineConversionUploadClientSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/totalEventCount> ;
    sh:name "total event count" ;
    sh:description "Output only. Total count of uploaded events." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the offline conversion upload summary at customer level. Offline conversion upload client summary resource names have the form: `customers/{customer_id}/offlineConversionUploadClientSummaries/{client}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/client> ;
    sh:name "client" ;
    sh:description "Output only. Client type of the upload event." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "GOOGLE_ADS_API" "GOOGLE_ADS_WEB_CLIENT" "ADS_DATA_CONNECTOR" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/pendingEventCount> ;
    sh:name "pending event count" ;
    sh:description "Output only. Total count of pending uploaded events." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/status> ;
    sh:name "status" ;
    sh:description "Output only. Overall status for offline conversion client summary. Status is generated from most recent calendar day with upload stats." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXCELLENT" "GOOD" "NEEDS_ATTENTION" "NO_RECENT_UPLOAD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/dailySummaries> ;
    sh:name "daily summaries" ;
    sh:description "Output only. Summary of history stats by last N days." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineConversionSummaryShape ;
    sh:class googleads:OfflineConversionSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/alerts> ;
    sh:name "alerts" ;
    sh:description "Output only. Details for each error code. Alerts are generated from most recent calendar day with upload stats." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineConversionAlertShape ;
    sh:class googleads:OfflineConversionAlert ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/successfulEventCount> ;
    sh:name "successful event count" ;
    sh:description "Output only. Total count of successful uploaded events." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/lastUploadDateTime> ;
    sh:name "last upload date time" ;
    sh:description "Output only. Date for the latest upload batch. The format is \"yyyy-mm-dd hh:mm:ss\", and it's in the time zone of the Google Ads account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/jobSummaries> ;
    sh:name "job summaries" ;
    sh:description "Output only. Summary of history stats by last N jobs." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineConversionSummaryShape ;
    sh:class googleads:OfflineConversionSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/successRate> ;
    sh:name "success rate" ;
    sh:description "Output only. Successful rate." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineConversionUploadClientSummary/pendingRate> ;
    sh:name "pending rate" ;
    sh:description "Output only. The ratio of total pending events to total events." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Theme Constant
googleads:KeywordThemeConstantShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordThemeConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordThemeConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the keyword theme constant. Keyword theme constant resource names have the form: `keywordThemeConstants/{keyword_theme_id}~{sub_keyword_theme_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordThemeConstant/countryCode> ;
    sh:name "country code" ;
    sh:description "Output only. The ISO-3166 Alpha-2 country code of the constant, eg. \"US\". To display and query matching purpose, the keyword theme needs to be localized." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordThemeConstant/languageCode> ;
    sh:name "language code" ;
    sh:description "Output only. The ISO-639-1 language code with 2 letters of the constant, eg. \"en\". To display and query matching purpose, the keyword theme needs to be localized." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordThemeConstant/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. The display name of the keyword theme or sub keyword theme." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Local Services Lead
googleads:LocalServicesLeadShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesLead ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of this Lead." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/categoryId> ;
    sh:name "category id" ;
    sh:description "Output only. Service category of the lead. For example: `xcat:service_area_business_hvac`, `xcat:service_area_business_real_estate_agent`, etc. For more details see: https://developers.google.com/google-ads/api/data/codes-formats#local_services_ids" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/leadType> ;
    sh:name "lead type" ;
    sh:description "Output only. Type of Local Services lead: phone, message, booking, etc." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MESSAGE" "PHONE_CALL" "BOOKING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/leadStatus> ;
    sh:name "lead status" ;
    sh:description "Output only. Current status of lead." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEW" "ACTIVE" "BOOKED" "DECLINED" "EXPIRED" "DISABLED" "CONSUMER_DECLINED" "WIPED_OUT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/note> ;
    sh:name "note" ;
    sh:description "Output only. Note added by advertiser for the lead." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:NoteShape ;
    sh:class googleads:Note ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. The date time at which lead was created by Local Services Ads. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/locale> ;
    sh:name "locale" ;
    sh:description "Output only. Language used by the Local Services provider linked to lead. See https://developers.google.com/google-ads/api/data/codes-formats#locales" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/leadFeedbackSubmitted> ;
    sh:name "lead feedback submitted" ;
    sh:description "Output only. True if the advertiser submitted feedback for the lead." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/creditDetails> ;
    sh:name "credit details" ;
    sh:description "Output only. Credit details of the lead." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:CreditDetailsShape ;
    sh:class googleads:CreditDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the local services lead data. Local Services Lead resource name have the form `customers/{customer_id}/localServicesLead/{local_services_lead_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/contactDetails> ;
    sh:name "contact details" ;
    sh:description "Output only. Lead's contact details." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ContactDetailsShape ;
    sh:class googleads:ContactDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/leadCharged> ;
    sh:name "lead charged" ;
    sh:description "Output only. True if the advertiser was charged for the lead." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLead/serviceId> ;
    sh:name "service id" ;
    sh:description "Output only. Service for the category. For example: `buyer_agent`, `seller_agent` for the category of `xcat:service_area_business_real_estate_agent`." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Note
googleads:NoteShape a sh:NodeShape ;
  sh:targetClass googleads:Note ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Note/editDateTime> ;
    sh:name "edit date time" ;
    sh:description "Output only. The date time when lead note was edited. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Note/description> ;
    sh:name "description" ;
    sh:description "Output only. Content of lead note." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Link Invitation
googleads:ProductLinkInvitationShape a sh:NodeShape ;
  sh:targetClass googleads:ProductLinkInvitation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the product link invitation. This field is read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ACCEPTED" "REQUESTED" "PENDING_APPROVAL" "REVOKED" "REJECTED" "EXPIRED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/merchantCenter> ;
    sh:name "merchant center" ;
    sh:description "Output only. Merchant Center link invitation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:MerchantCenterLinkInvitationIdentifierShape ;
    sh:class googleads:MerchantCenterLinkInvitationIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/productLinkInvitationId> ;
    sh:name "product link invitation id" ;
    sh:description "Output only. The ID of the product link invitation. This field is read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/hotelCenter> ;
    sh:name "hotel center" ;
    sh:description "Output only. Hotel link invitation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:HotelCenterLinkInvitationIdentifierShape ;
    sh:class googleads:HotelCenterLinkInvitationIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/advertisingPartnerProperties> ;
    sh:name "advertising partner properties" ;
    sh:description "Output only. Advertising Partner link invitation properties. These properties are only applicable when the link is for an Advertising Partner." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdvertisingPartnerLinkInvitationPropertiesShape ;
    sh:class googleads:AdvertisingPartnerLinkInvitationProperties ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the invited account. This field is read only and can be used for filtering invitations with {" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DATA_PARTNER" "GOOGLE_ADS" "HOTEL_CENTER" "MERCHANT_CENTER" "ADVERTISING_PARTNER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/advertisingPartner> ;
    sh:name "advertising partner" ;
    sh:description "Output only. Advertising Partner link invitation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdvertisingPartnerLinkInvitationIdentifierShape ;
    sh:class googleads:AdvertisingPartnerLinkInvitationIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLinkInvitation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of a product link invitation. Product link invitation resource names have the form: `customers/{customer_id}/productLinkInvitations/{product_link_invitation_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Merchant Center Link Invitation Identifier
googleads:MerchantCenterLinkInvitationIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:MerchantCenterLinkInvitationIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MerchantCenterLinkInvitationIdentifier/merchantCenterId> ;
    sh:name "merchant center id" ;
    sh:description "Output only. The Merchant Center id of the Merchant account. This field is read only" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Center Link Invitation Identifier
googleads:HotelCenterLinkInvitationIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:HotelCenterLinkInvitationIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelCenterLinkInvitationIdentifier/hotelCenterId> ;
    sh:name "hotel center id" ;
    sh:description "Output only. The hotel center id of the hotel account. This field is read only" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword View
googleads:KeywordViewShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the keyword view. Keyword view resource names have the form: `customers/{customer_id}/keywordViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Performance View
googleads:HotelPerformanceViewShape a sh:NodeShape ;
  sh:targetClass googleads:HotelPerformanceView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelPerformanceView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the hotel performance view. Hotel performance view resource names have the form: `customers/{customer_id}/hotelPerformanceView`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Local Services Employee
googleads:LocalServicesEmployeeShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesEmployee ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/lastName> ;
    sh:name "last name" ;
    sh:description "Output only. Last name of the employee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Local Services Verification. Local Services Verification resource names have the form: `customers/{customer_id}/localServicesEmployees/{gls_employee_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/fellowships> ;
    sh:name "fellowships" ;
    sh:description "Output only. The institutions where the employee has completed their fellowship." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:FellowshipShape ;
    sh:class googleads:Fellowship ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/residencies> ;
    sh:name "residencies" ;
    sh:description "Output only. The institutions where the employee has completed their residency." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:ResidencyShape ;
    sh:class googleads:Residency ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/languagesSpoken> ;
    sh:name "languages spoken" ;
    sh:description "Output only. Languages that the employee speaks, represented as language tags from https://developers.google.com/admin-sdk/directory/v1/languages" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/middleName> ;
    sh:name "middle name" ;
    sh:description "Output only. Middle name of the employee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/yearStartedPracticing> ;
    sh:name "year started practicing" ;
    sh:description "Output only. The year that this employee started practicing in this field." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the employee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/status> ;
    sh:name "status" ;
    sh:description "Output only. Employee status, such as DELETED or ENABLED." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/firstName> ;
    sh:name "first name" ;
    sh:description "Output only. First name of the employee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/type> ;
    sh:name "type" ;
    sh:description "Output only. Employee type." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BUSINESS_OWNER" "EMPLOYEE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/universityDegrees> ;
    sh:name "university degrees" ;
    sh:description "Output only. A list of degrees this employee has obtained, and wants to feature." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:UniversityDegreeShape ;
    sh:class googleads:UniversityDegree ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/jobTitle> ;
    sh:name "job title" ;
    sh:description "Output only. Job title for this employee, such as \"Senior partner\" in legal verticals." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/emailAddress> ;
    sh:name "email address" ;
    sh:description "Output only. Email address of the employee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. Timestamp of employee creation. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/nationalProviderIdNumber> ;
    sh:name "national provider id number" ;
    sh:description "Output only. NPI id associated with the employee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesEmployee/categoryIds> ;
    sh:name "category ids" ;
    sh:description "Output only. Category of the employee. A list of Local Services category IDs can be found at https://developers.google.com/google-ads/api/data/codes-formats#local_services_ids." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] .

# Shape for Residency
googleads:ResidencyShape a sh:NodeShape ;
  sh:targetClass googleads:Residency ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Residency/completionYear> ;
    sh:name "completion year" ;
    sh:description "Output only. Year of completion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Residency/institutionName> ;
    sh:name "institution name" ;
    sh:description "Output only. Name of the institution at which the residency was completed." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for University Degree
googleads:UniversityDegreeShape a sh:NodeShape ;
  sh:targetClass googleads:UniversityDegree ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UniversityDegree/graduationYear> ;
    sh:name "graduation year" ;
    sh:description "Output only. Year of graduation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UniversityDegree/degree> ;
    sh:name "degree" ;
    sh:description "Output only. Name of the degree obtained." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UniversityDegree/institutionName> ;
    sh:name "institution name" ;
    sh:description "Output only. Name of the university at which the degree was obtained." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Group View
googleads:HotelGroupViewShape a sh:NodeShape ;
  sh:targetClass googleads:HotelGroupView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelGroupView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the hotel group view. Hotel Group view resource names have the form: `customers/{customer_id}/hotelGroupViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Video Enhancement
googleads:VideoEnhancementShape a sh:NodeShape ;
  sh:targetClass googleads:VideoEnhancement ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoEnhancement/durationMillis> ;
    sh:name "duration millis" ;
    sh:description "Output only. Duration of this video, in milliseconds." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoEnhancement/source> ;
    sh:name "source" ;
    sh:description "Output only. The source of the video (e.g. advertiser or enhanced by Google Ads)." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "ENHANCED_BY_GOOGLE_ADS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoEnhancement/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the video enhancement. Video enhancement resource names have the form: `customers/{customer_id}/videoEnhancements/{video_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VideoEnhancement/title> ;
    sh:name "title" ;
    sh:description "Output only. Title of this video." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Landing Page View
googleads:LandingPageViewShape a sh:NodeShape ;
  sh:targetClass googleads:LandingPageView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LandingPageView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the landing page view. Landing page view resource names have the form: `customers/{customer_id}/landingPageViews/{unexpanded_final_url_fingerprint}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LandingPageView/unexpandedFinalUrl> ;
    sh:name "unexpanded final url" ;
    sh:description "Output only. The advertiser-specified final URL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Local Services Lead Conversation
googleads:LocalServicesLeadConversationShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesLeadConversation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/eventDateTime> ;
    sh:name "event date time" ;
    sh:description "Output only. The date time at which lead conversation was created by Local Services Ads. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the local services lead conversation data. Local Services Lead Conversation resource name have the form `customers/{customer_id}/localServicesLeadConversation/{local_services_lead_conversation_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/conversationChannel> ;
    sh:name "conversation channel" ;
    sh:description "Output only. Type of GLS lead conversation, EMAIL, MESSAGE, PHONE_CALL, SMS, etc." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EMAIL" "MESSAGE" "PHONE_CALL" "SMS" "BOOKING" "WHATSAPP" "ADS_API" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/participantType> ;
    sh:name "participant type" ;
    sh:description "Output only. Type of participant in the lead conversation, ADVERTISER or CONSUMER." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADVERTISER" "CONSUMER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/phoneCallDetails> ;
    sh:name "phone call details" ;
    sh:description "Output only. Details of phone call conversation in case of PHONE_CALL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:PhoneCallDetailsShape ;
    sh:class googleads:PhoneCallDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/messageDetails> ;
    sh:name "message details" ;
    sh:description "Output only. Details of message conversation in case of EMAIL, MESSAGE or SMS." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:MessageDetailsShape ;
    sh:class googleads:MessageDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of this Lead Conversation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesLeadConversation/lead> ;
    sh:name "lead" ;
    sh:description "Output only. Resource name of Lead associated to the Lead Conversation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Phone Call Details
googleads:PhoneCallDetailsShape a sh:NodeShape ;
  sh:targetClass googleads:PhoneCallDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PhoneCallDetails/callDurationMillis> ;
    sh:name "call duration millis" ;
    sh:description "Output only. The duration (in milliseconds) of the phone call (end to end)." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PhoneCallDetails/callRecordingUrl> ;
    sh:name "call recording url" ;
    sh:description "Output only. URL to the call recording audio file." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Message Details
googleads:MessageDetailsShape a sh:NodeShape ;
  sh:targetClass googleads:MessageDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MessageDetails/text> ;
    sh:name "text" ;
    sh:description "Output only. Textual content of the message." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MessageDetails/attachmentUrls> ;
    sh:name "attachment urls" ;
    sh:description "Output only. URL to the SMS or email attachments. These URLs can be used to download the contents of the attachment by using the developer token." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] .

# Shape for Travel Activity Group View
googleads:TravelActivityGroupViewShape a sh:NodeShape ;
  sh:targetClass googleads:TravelActivityGroupView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TravelActivityGroupView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the travel activity group view. Travel Activity Group view resource names have the form: `customers/{customer_id}/travelActivityGroupViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for User Location View
googleads:UserLocationViewShape a sh:NodeShape ;
  sh:targetClass googleads:UserLocationView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserLocationView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the user location view. UserLocation view resource names have the form: `customers/{customer_id}/userLocationViews/{country_criterion_id}~{targeting_location}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserLocationView/targetingLocation> ;
    sh:name "targeting location" ;
    sh:description "Output only. Indicates whether location was targeted or not." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserLocationView/countryCriterionId> ;
    sh:name "country criterion id" ;
    sh:description "Output only. Criterion Id for the country." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Parental Status View
googleads:ParentalStatusViewShape a sh:NodeShape ;
  sh:targetClass googleads:ParentalStatusView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ParentalStatusView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the parental status view. Parental Status view resource names have the form: `customers/{customer_id}/parentalStatusViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Reconciliation
googleads:HotelReconciliationShape a sh:NodeShape ;
  sh:targetClass googleads:HotelReconciliation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/orderId> ;
    sh:name "order id" ;
    sh:description "Output only. The order ID is the identifier for this booking as provided in the 'transaction_id' parameter of the conversion tracking tag." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The resource name for the Campaign associated with the conversion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/status> ;
    sh:name "status" ;
    sh:description "Required. Output only. Current status of a booking with regards to reconciliation and billing. Bookings should be reconciled within 45 days after the check-out date. Any booking not reconciled within 45 days will be billed at its original value." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "RESERVATION_ENABLED" "RECONCILIATION_NEEDED" "RECONCILED" "CANCELED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/reconciledValueMicros> ;
    sh:name "reconciled value micros" ;
    sh:description "Required. Output only. Reconciled value is the final value of a booking as paid by the guest. If original booking value changes for any reason, such as itinerary changes or room upsells, the reconciled value should be the full final amount collected. If a booking is canceled, the reconciled value should include the value of any cancellation fees or non-refundable nights charged. Value is in millionths of the base unit currency. For example, $12.35 would be represented as 12350000. Currency unit is in the default customer currency." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the hotel reconciliation. Hotel reconciliation resource names have the form: `customers/{customer_id}/hotelReconciliations/{commission_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/commissionId> ;
    sh:name "commission id" ;
    sh:description "Required. Output only. The commission ID is Google's ID for this booking. Every booking event is assigned a Commission ID to help you match it to a guest stay." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/checkInDate> ;
    sh:name "check in date" ;
    sh:description "Output only. Check-in date recorded when the booking is made. If the check-in date is modified at reconciliation, the revised date will then take the place of the original date in this column. Format is YYYY-MM-DD." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/hotelId> ;
    sh:name "hotel id" ;
    sh:description "Output only. Unique identifier for the booked property, as provided in the Hotel Center feed. The hotel ID comes from the 'ID' parameter of the conversion tracking tag." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/checkOutDate> ;
    sh:name "check out date" ;
    sh:description "Output only. Check-out date recorded when the booking is made. If the check-in date is modified at reconciliation, the revised date will then take the place of the original date in this column. Format is YYYY-MM-DD." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/hotelCenterId> ;
    sh:name "hotel center id" ;
    sh:description "Output only. Identifier for the Hotel Center account which provides the rates for the Hotel campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.HotelReconciliation/billed> ;
    sh:name "billed" ;
    sh:description "Output only. Whether a given booking has been billed. Once billed, a booking can't be modified." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Shared Criterion
googleads:SharedCriterionShape a sh:NodeShape ;
  sh:targetClass googleads:SharedCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/brand> ;
    sh:name "brand" ;
    sh:description "Immutable. Brand." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:BrandInfoShape ;
    sh:class googleads:BrandInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/placement> ;
    sh:name "placement" ;
    sh:description "Immutable. Placement." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:PlacementInfoShape ;
    sh:class googleads:PlacementInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/youtubeChannel> ;
    sh:name "youtube channel" ;
    sh:description "Immutable. YouTube Channel." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeChannelInfoShape ;
    sh:class googleads:YouTubeChannelInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/mobileAppCategory> ;
    sh:name "mobile app category" ;
    sh:description "Immutable. Mobile App Category." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileAppCategoryInfoShape ;
    sh:class googleads:MobileAppCategoryInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/mobileApplication> ;
    sh:name "mobile application" ;
    sh:description "Immutable. Mobile application." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MobileApplicationInfoShape ;
    sh:class googleads:MobileApplicationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/webpage> ;
    sh:name "webpage" ;
    sh:description "Immutable. Webpage." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:WebpageInfoShape ;
    sh:class googleads:WebpageInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the shared criterion. Shared set resource names have the form: `customers/{customer_id}/sharedCriteria/{shared_set_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/criterionId> ;
    sh:name "criterion id" ;
    sh:description "Output only. The ID of the criterion. This field is ignored for mutates." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/sharedSet> ;
    sh:name "shared set" ;
    sh:description "Immutable. The shared set to which the shared criterion belongs." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/youtubeVideo> ;
    sh:name "youtube video" ;
    sh:description "Immutable. YouTube Video." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:YouTubeVideoInfoShape ;
    sh:class googleads:YouTubeVideoInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/retailFilter> ;
    sh:name "retail filter" ;
    sh:description "Immutable. Retail Filter." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:RetailFilterShape ;
    sh:class googleads:RetailFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/verticalAdsItemGroupRule> ;
    sh:name "vertical ads item group rule" ;
    sh:description "Immutable. Vertical ads item group rule." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:VerticalAdsItemGroupRuleInfoShape ;
    sh:class googleads:VerticalAdsItemGroupRuleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/negative> ;
    sh:name "negative" ;
    sh:description "Immutable. If true, the criterion is excluded. If false, the criterion is targeted." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/keyword> ;
    sh:name "keyword" ;
    sh:description "Immutable. Keyword." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedCriterion/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the criterion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "KEYWORD" "PLACEMENT" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "DEVICE" "LOCATION" "LISTING_GROUP" "AD_SCHEDULE" "AGE_RANGE" "GENDER" "INCOME_RANGE" "PARENTAL_STATUS" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "USER_LIST" "PROXIMITY" "TOPIC" "LISTING_SCOPE" "LANGUAGE" "IP_BLOCK" "CONTENT_LABEL" "CARRIER" "USER_INTEREST" "WEBPAGE" "OPERATING_SYSTEM_VERSION" "APP_PAYMENT_MODEL" "MOBILE_DEVICE" "CUSTOM_AFFINITY" "CUSTOM_INTENT" "LOCATION_GROUP" "CUSTOM_AUDIENCE" "COMBINED_AUDIENCE" "KEYWORD_THEME" "AUDIENCE" "NEGATIVE_KEYWORD_LIST" "LOCAL_SERVICE_ID" "SEARCH_THEME" "BRAND" "BRAND_LIST" "LIFE_EVENT" "WEBPAGE_LIST" "VIDEO_LINEUP" "PLACEMENT_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE_LIST" "VERTICAL_ADS_ITEM_GROUP_RULE" "RETAIL_FILTER_BUNDLE" "RETAIL_FILTER" ) ;
  ] .

# Shape for Retail Filter
googleads:RetailFilterShape a sh:NodeShape ;
  sh:targetClass googleads:RetailFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RetailFilter/expression> ;
    sh:name "expression" ;
    sh:description "An expression node. At this time, this can only be an OR node." ;
    sh:node googleads:RetailFilterExpressionShape ;
    sh:class googleads:RetailFilterExpression ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RetailFilter/tag> ;
    sh:name "tag" ;
    sh:description "A tag node." ;
    sh:node googleads:RetailTagShape ;
    sh:class googleads:RetailTag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Retail Filter Expression
googleads:RetailFilterExpressionShape a sh:NodeShape ;
  sh:targetClass googleads:RetailFilterExpression ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RetailFilterExpression/name> ;
    sh:name "name" ;
    sh:description "The name of the expression. This name is used for grouping Retail Tags into one logical expression with OR operator. The name can contain at most 20 characters. Only lowercase latin letters, underscores, and numbers are allowed. This field is required and must be unique within the shared set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Retail Tag
googleads:RetailTagShape a sh:NodeShape ;
  sh:targetClass googleads:RetailTag ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RetailTag/expressionName> ;
    sh:name "expression name" ;
    sh:description "The name of the expression this tag belongs to. If empty, the tag is a top-level condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RetailTag/value> ;
    sh:name "value" ;
    sh:description "The value of the tag. It can contain at most 50 characters. All Unicode characters except comma and newline are allowed. This field is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Vertical Ads Item Group Rule Info
googleads:VerticalAdsItemGroupRuleInfoShape a sh:NodeShape ;
  sh:targetClass googleads:VerticalAdsItemGroupRuleInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/cityCriterionId> ;
    sh:name "city criterion id" ;
    sh:description "The resource name of the Geo Target Constant for the city." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/itemCode> ;
    sh:name "item code" ;
    sh:description "The id specifying a particular Vertical Ad listing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/regionCriterionId> ;
    sh:name "region criterion id" ;
    sh:description "The resource name of the Geo Target Constant for the region." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/venue> ;
    sh:name "venue" ;
    sh:description "A name for a specific location, like the venue for a concert event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/userRating> ;
    sh:name "user rating" ;
    sh:description "Integer value specifying the user rating for a Vertical Ad listing. Ranges from 1 to 5, where 5 is the best." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/hotelClass> ;
    sh:name "hotel class" ;
    sh:description "Integer value specifying the class rating for a hotel. Ranges from 1 to 5 stars." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/eventParticipantDisplayName> ;
    sh:name "event participant display name" ;
    sh:description "The name of an associated participant for a given event. For example, headliner for a concert event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.VerticalAdsItemGroupRuleInfo/countryCriterionId> ;
    sh:name "country criterion id" ;
    sh:description "The resource name of the Geo Target Constant for the country." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Plan Ad Group Keyword
googleads:KeywordPlanAdGroupKeywordShape a sh:NodeShape ;
  sh:targetClass googleads:KeywordPlanAdGroupKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroupKeyword/keywordPlanAdGroup> ;
    sh:name "keyword plan ad group" ;
    sh:description "The Keyword Plan ad group to which this keyword belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroupKeyword/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Keyword Plan ad group keyword. KeywordPlanAdGroupKeyword resource names have the form: `customers/{customer_id}/keywordPlanAdGroupKeywords/{kp_ad_group_keyword_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroupKeyword/text> ;
    sh:name "text" ;
    sh:description "The keyword text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroupKeyword/matchType> ;
    sh:name "match type" ;
    sh:description "The keyword match type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXACT" "PHRASE" "BROAD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroupKeyword/negative> ;
    sh:name "negative" ;
    sh:description "Immutable. If true, the keyword is negative." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroupKeyword/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the Keyword Plan keyword." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.KeywordPlanAdGroupKeyword/cpcBidMicros> ;
    sh:name "cpc bid micros" ;
    sh:description "A keyword level max cpc bid in micros (for example, $1 = 1mm). The currency is the same as the account currency code. This will override any CPC bid set at the keyword plan ad group level. Not applicable for negative keywords. (negative = true) This field is Optional." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Remarketing Action
googleads:RemarketingActionShape a sh:NodeShape ;
  sh:targetClass googleads:RemarketingAction ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RemarketingAction/tagSnippets> ;
    sh:name "tag snippets" ;
    sh:description "Output only. The snippets used for tracking remarketing actions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:TagSnippetShape ;
    sh:class googleads:TagSnippet ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RemarketingAction/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the remarketing action. Remarketing action resource names have the form: `customers/{customer_id}/remarketingActions/{remarketing_action_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RemarketingAction/id> ;
    sh:name "id" ;
    sh:description "Output only. Id of the remarketing action." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RemarketingAction/name> ;
    sh:name "name" ;
    sh:description "The name of the remarketing action. This field is required and should not be empty when creating new remarketing actions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Offline User Data Job
googleads:OfflineUserDataJobShape a sh:NodeShape ;
  sh:targetClass googleads:OfflineUserDataJob ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of this offline user data job." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/status> ;
    sh:name "status" ;
    sh:description "Output only. Status of the job." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "RUNNING" "SUCCESS" "FAILED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/operationMetadata> ;
    sh:name "operation metadata" ;
    sh:description "Output only. Metadata of offline user data job depicting match rate range." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:OfflineUserDataJobMetadataShape ;
    sh:class googleads:OfflineUserDataJobMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the offline user data job. Offline user data job resource names have the form: `customers/{customer_id}/offlineUserDataJobs/{offline_user_data_job_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/type> ;
    sh:name "type" ;
    sh:description "Immutable. Type of the job." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "STORE_SALES_UPLOAD_FIRST_PARTY" "STORE_SALES_UPLOAD_THIRD_PARTY" "CUSTOMER_MATCH_USER_LIST" "CUSTOMER_MATCH_WITH_ATTRIBUTES" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/customerMatchUserListMetadata> ;
    sh:name "customer match user list metadata" ;
    sh:description "Immutable. Metadata for data updates to a CRM-based user list." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:CustomerMatchUserListMetadataShape ;
    sh:class googleads:CustomerMatchUserListMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/storeSalesMetadata> ;
    sh:name "store sales metadata" ;
    sh:description "Immutable. Metadata for store sales data update." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:StoreSalesMetadataShape ;
    sh:class googleads:StoreSalesMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/failureReason> ;
    sh:name "failure reason" ;
    sh:description "Output only. Reason for the processing failure, if status is FAILED." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "INSUFFICIENT_MATCHED_TRANSACTIONS" "INSUFFICIENT_TRANSACTIONS" "HIGH_AVERAGE_TRANSACTION_VALUE" "LOW_AVERAGE_TRANSACTION_VALUE" "NEWLY_OBSERVED_CURRENCY_CODE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJob/externalId> ;
    sh:name "external id" ;
    sh:description "Immutable. User specified job ID." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Offline User Data Job Metadata
googleads:OfflineUserDataJobMetadataShape a sh:NodeShape ;
  sh:targetClass googleads:OfflineUserDataJobMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.OfflineUserDataJobMetadata/matchRateRange> ;
    sh:name "match rate range" ;
    sh:description "Output only. Match rate of the Customer Match user list upload. Describes the estimated match rate when the status of the job is \"RUNNING\" and final match rate when the final match rate is available after the status of the job is \"SUCCESS/FAILED\"." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MATCH_RANGE_LESS_THAN_20" "MATCH_RANGE_20_TO_30" "MATCH_RANGE_31_TO_40" "MATCH_RANGE_41_TO_50" "MATCH_RANGE_51_TO_60" "MATCH_RANGE_61_TO_70" "MATCH_RANGE_71_TO_80" "MATCH_RANGE_81_TO_90" "MATCH_RANGE_91_TO_100" ) ;
  ] .

# Shape for Store Sales Metadata
googleads:StoreSalesMetadataShape a sh:NodeShape ;
  sh:targetClass googleads:StoreSalesMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesMetadata/transactionUploadFraction> ;
    sh:name "transaction upload fraction" ;
    sh:description "This is the ratio of sales being uploaded compared to the overall sales that can be associated with a customer. Required. The fraction needs to be between 0 and 1 (excluding 0). For example, if you upload half the sales that you are able to associate with a customer, this would be 0.5." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesMetadata/customKey> ;
    sh:name "custom key" ;
    sh:description "Name of the store sales custom variable key. A predefined key that can be applied to the transaction and then later used for custom segmentation in reporting. Accessible only to customers on the allow-list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesMetadata/loyaltyFraction> ;
    sh:name "loyalty fraction" ;
    sh:description "This is the fraction of all transactions that are identifiable (for example, associated with any form of customer information). Required. The fraction needs to be between 0 and 1 (excluding 0)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesMetadata/thirdPartyMetadata> ;
    sh:name "third party metadata" ;
    sh:description "Metadata for a third party Store Sales upload." ;
    sh:node googleads:StoreSalesThirdPartyMetadataShape ;
    sh:class googleads:StoreSalesThirdPartyMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Store Sales Third Party Metadata
googleads:StoreSalesThirdPartyMetadataShape a sh:NodeShape ;
  sh:targetClass googleads:StoreSalesThirdPartyMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesThirdPartyMetadata/partnerMatchFraction> ;
    sh:name "partner match fraction" ;
    sh:description "The fraction of valid transactions that are matched to a third party assigned user ID on the partner side. Required. The fraction needs to be between 0 and 1 (excluding 0)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesThirdPartyMetadata/partnerUploadFraction> ;
    sh:name "partner upload fraction" ;
    sh:description "The fraction of valid transactions that are uploaded by the partner to Google. Required. The fraction needs to be between 0 and 1 (excluding 0)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesThirdPartyMetadata/bridgeMapVersionId> ;
    sh:name "bridge map version id" ;
    sh:description "Version of partner IDs to be used for uploads. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesThirdPartyMetadata/partnerId> ;
    sh:name "partner id" ;
    sh:description "ID of the third party partner updating the transaction feed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesThirdPartyMetadata/validTransactionFraction> ;
    sh:name "valid transaction fraction" ;
    sh:description "The fraction of transactions that are valid. Invalid transactions may include invalid formats or values. Required. The fraction needs to be between 0 and 1 (excluding 0)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.StoreSalesThirdPartyMetadata/advertiserUploadDateTime> ;
    sh:name "advertiser upload date time" ;
    sh:description "Time the advertiser uploaded the data to the partner. Required. The format is \"YYYY-MM-DD HH:MM:SS\". Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Search Term View
googleads:SearchTermViewShape a sh:NodeShape ;
  sh:targetClass googleads:SearchTermView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SearchTermView/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. The ad group the search term served in." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SearchTermView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the search term view. Search term view resource names have the form: `customers/{customer_id}/searchTermViews/{campaign_id}~{ad_group_id}~{URL-base64_search_term}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SearchTermView/searchTerm> ;
    sh:name "search term" ;
    sh:description "Output only. The search term." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SearchTermView/status> ;
    sh:name "status" ;
    sh:description "Output only. Indicates whether the search term is currently one of your targeted or excluded keywords." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ADDED" "EXCLUDED" "ADDED_EXCLUDED" "NONE" ) ;
  ] .

# Shape for Performance Max Placement View
googleads:PerformanceMaxPlacementViewShape a sh:NodeShape ;
  sh:targetClass googleads:PerformanceMaxPlacementView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerformanceMaxPlacementView/placementType> ;
    sh:name "placement type" ;
    sh:description "Output only. Type of the placement. Possible values for Performance Max placements are WEBSITE, MOBILE_APPLICATION, or YOUTUBE_VIDEO." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "WEBSITE" "MOBILE_APP_CATEGORY" "MOBILE_APPLICATION" "YOUTUBE_VIDEO" "YOUTUBE_CHANNEL" "GOOGLE_PRODUCTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerformanceMaxPlacementView/targetUrl> ;
    sh:name "target url" ;
    sh:description "Output only. URL of the placement, for example, website, link to the mobile application in app store, or a YouTube video URL." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerformanceMaxPlacementView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Performance Max placement view. Performance Max placement view resource names have the form: `customers/{customer_id}/performanceMaxPlacementViews/{base_64_placement}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerformanceMaxPlacementView/placement> ;
    sh:name "placement" ;
    sh:description "Output only. The default placement string, such as the website URL, mobile application ID, or a YouTube video ID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerformanceMaxPlacementView/displayName> ;
    sh:name "display name" ;
    sh:description "Output only. The name displayed to represent the placement, such as the URL name for websites, YouTube video name for YouTube videos, and translated mobile app name for mobile apps." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Matched Location Interest View
googleads:MatchedLocationInterestViewShape a sh:NodeShape ;
  sh:targetClass googleads:MatchedLocationInterestView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MatchedLocationInterestView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the matched location interest view. Matched location interest view resource names have the form: `customers/{customer_id}/matchedLocationInterestViews/{country_criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Topic View
googleads:TopicViewShape a sh:NodeShape ;
  sh:targetClass googleads:TopicView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TopicView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the topic view. Topic view resource names have the form: `customers/{customer_id}/topicViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Income Range View
googleads:IncomeRangeViewShape a sh:NodeShape ;
  sh:targetClass googleads:IncomeRangeView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.IncomeRangeView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the income range view. Income range view resource names have the form: `customers/{customer_id}/incomeRangeViews/{ad_group_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Travel Activity Performance View
googleads:TravelActivityPerformanceViewShape a sh:NodeShape ;
  sh:targetClass googleads:TravelActivityPerformanceView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TravelActivityPerformanceView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the travel activity performance view. Travel Activity performance view resource names have the form: `customers/{customer_id}/travelActivityPerformanceView`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Paid Organic Search Term View
googleads:PaidOrganicSearchTermViewShape a sh:NodeShape ;
  sh:targetClass googleads:PaidOrganicSearchTermView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PaidOrganicSearchTermView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the search term view. Search term view resource names have the form: `customers/{customer_id}/paidOrganicSearchTermViews/{campaign_id}~ {ad_group_id}~{URL-base64 search term}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PaidOrganicSearchTermView/searchTerm> ;
    sh:name "search term" ;
    sh:description "Output only. The search term." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Label
googleads:LabelShape a sh:NodeShape ;
  sh:targetClass googleads:Label ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Label/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Name of the resource. Label resource names have the form: `customers/{customer_id}/labels/{label_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Label/id> ;
    sh:name "id" ;
    sh:description "Output only. ID of the label. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Label/name> ;
    sh:name "name" ;
    sh:description "The name of the label. This field is required and should not be empty when creating a new label. The length of this string should be between 1 and 80, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Label/status> ;
    sh:name "status" ;
    sh:description "Output only. Status of the label. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Label/textLabel> ;
    sh:name "text label" ;
    sh:description "A type of label displaying text on a colored background." ;
    sh:node googleads:TextLabelShape ;
    sh:class googleads:TextLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Text Label
googleads:TextLabelShape a sh:NodeShape ;
  sh:targetClass googleads:TextLabel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TextLabel/description> ;
    sh:name "description" ;
    sh:description "A short description of the label. The length must be no more than 200 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TextLabel/backgroundColor> ;
    sh:name "background color" ;
    sh:description "Background color of the label in HEX format. This string must match the regular expression '^\\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$'. Note: The background color may not be visible for manager accounts." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Qualifying Question
googleads:QualifyingQuestionShape a sh:NodeShape ;
  sh:targetClass googleads:QualifyingQuestion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.QualifyingQuestion/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the qualifying question. 'qualifyingQuestions/{qualifyingQuestionId}'" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.QualifyingQuestion/qualifyingQuestionId> ;
    sh:name "qualifying question id" ;
    sh:description "Output only. The id of the qualifying question." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.QualifyingQuestion/locale> ;
    sh:name "locale" ;
    sh:description "Output only. The locale of the qualifying question." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.QualifyingQuestion/text> ;
    sh:name "text" ;
    sh:description "Output only. The qualifying question." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Local Services Verification Artifact
googleads:LocalServicesVerificationArtifactShape a sh:NodeShape ;
  sh:targetClass googleads:LocalServicesVerificationArtifact ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the Local Services Verification. Local Services Verification resource names have the form: `customers/{customer_id}/localServicesVerificationArtifacts/{verification_artifact_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/businessRegistrationCheckVerificationArtifact> ;
    sh:name "business registration check verification artifact" ;
    sh:description "Output only. A business registration check verification artifact." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:BusinessRegistrationCheckVerificationArtifactShape ;
    sh:class googleads:BusinessRegistrationCheckVerificationArtifact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/artifactType> ;
    sh:name "artifact type" ;
    sh:description "Output only. The type of the verification artifact." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BACKGROUND_CHECK" "INSURANCE" "LICENSE" "BUSINESS_REGISTRATION_CHECK" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the verification artifact." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of the verification artifact." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PASSED" "FAILED" "PENDING" "NO_SUBMISSION" "CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/backgroundCheckVerificationArtifact> ;
    sh:name "background check verification artifact" ;
    sh:description "Output only. A background check verification artifact." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:BackgroundCheckVerificationArtifactShape ;
    sh:class googleads:BackgroundCheckVerificationArtifact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/licenseVerificationArtifact> ;
    sh:name "license verification artifact" ;
    sh:description "Output only. A license verification artifact." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LicenseVerificationArtifactShape ;
    sh:class googleads:LicenseVerificationArtifact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/insuranceVerificationArtifact> ;
    sh:name "insurance verification artifact" ;
    sh:description "Output only. An insurance verification artifact." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:InsuranceVerificationArtifactShape ;
    sh:class googleads:InsuranceVerificationArtifact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocalServicesVerificationArtifact/creationDateTime> ;
    sh:name "creation date time" ;
    sh:description "Output only. The timestamp when this verification artifact was created. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for License Verification Artifact
googleads:LicenseVerificationArtifactShape a sh:NodeShape ;
  sh:targetClass googleads:LicenseVerificationArtifact ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LicenseVerificationArtifact/licenseeFirstName> ;
    sh:name "licensee first name" ;
    sh:description "Output only. First name of the licensee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LicenseVerificationArtifact/licenseeLastName> ;
    sh:name "licensee last name" ;
    sh:description "Output only. Last name of the licensee." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LicenseVerificationArtifact/expirationDateTime> ;
    sh:name "expiration date time" ;
    sh:description "Output only. The timestamp when this license expires. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LicenseVerificationArtifact/rejectionReason> ;
    sh:name "rejection reason" ;
    sh:description "Output only. License rejection reason." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BUSINESS_NAME_MISMATCH" "UNAUTHORIZED" "EXPIRED" "POOR_QUALITY" "UNVERIFIABLE" "WRONG_DOCUMENT_OR_ID" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LicenseVerificationArtifact/licenseDocumentReadonly> ;
    sh:name "license document readonly" ;
    sh:description "Output only. The readonly field containing the information for an uploaded license document." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LocalServicesDocumentReadOnlyShape ;
    sh:class googleads:LocalServicesDocumentReadOnly ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LicenseVerificationArtifact/licenseType> ;
    sh:name "license type" ;
    sh:description "Output only. License type / name." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LicenseVerificationArtifact/licenseNumber> ;
    sh:name "license number" ;
    sh:description "Output only. License number." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Insurance Verification Artifact
googleads:InsuranceVerificationArtifactShape a sh:NodeShape ;
  sh:targetClass googleads:InsuranceVerificationArtifact ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InsuranceVerificationArtifact/amountMicros> ;
    sh:name "amount micros" ;
    sh:description "Output only. Insurance amount. This is measured in \"micros\" of the currency mentioned in the insurance document." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InsuranceVerificationArtifact/insuranceDocumentReadonly> ;
    sh:name "insurance document readonly" ;
    sh:description "Output only. The readonly field containing the information for an uploaded insurance document." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:LocalServicesDocumentReadOnlyShape ;
    sh:class googleads:LocalServicesDocumentReadOnly ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InsuranceVerificationArtifact/expirationDateTime> ;
    sh:name "expiration date time" ;
    sh:description "Output only. The timestamp when this insurance expires. The format is \"YYYY-MM-DD HH:MM:SS\" in the Google Ads account's timezone. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.InsuranceVerificationArtifact/rejectionReason> ;
    sh:name "rejection reason" ;
    sh:description "Output only. Insurance document's rejection reason." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "BUSINESS_NAME_MISMATCH" "INSURANCE_AMOUNT_INSUFFICIENT" "EXPIRED" "NO_SIGNATURE" "NO_POLICY_NUMBER" "NO_COMMERCIAL_GENERAL_LIABILITY" "EDITABLE_FORMAT" "CATEGORY_MISMATCH" "MISSING_EXPIRATION_DATE" "POOR_QUALITY" "POTENTIALLY_EDITED" "WRONG_DOCUMENT_TYPE" "NON_FINAL" "OTHER" ) ;
  ] .

# Shape for Product Link
googleads:ProductLinkShape a sh:NodeShape ;
  sh:targetClass googleads:ProductLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/merchantCenter> ;
    sh:name "merchant center" ;
    sh:description "Immutable. Google Merchant Center link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:MerchantCenterIdentifierShape ;
    sh:class googleads:MerchantCenterIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/advertisingPartnerProperties> ;
    sh:name "advertising partner properties" ;
    sh:description "Output only. Advertising Partner link properties. These properties are only applicable when the link is for an Advertising Partner." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdvertisingPartnerPropertiesShape ;
    sh:class googleads:AdvertisingPartnerProperties ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of the linked product." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "DATA_PARTNER" "GOOGLE_ADS" "HOTEL_CENTER" "MERCHANT_CENTER" "ADVERTISING_PARTNER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/advertisingPartner> ;
    sh:name "advertising partner" ;
    sh:description "Output only. Advertising Partner link." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdvertisingPartnerIdentifierShape ;
    sh:class googleads:AdvertisingPartnerIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. Resource name of the product link. ProductLink resource names have the form: `customers/{customer_id}/productLinks/{product_link_id} `" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/productLinkId> ;
    sh:name "product link id" ;
    sh:description "Output only. The ID of the link. This field is read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/dataPartner> ;
    sh:name "data partner" ;
    sh:description "Immutable. Data partner link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:DataPartnerIdentifierShape ;
    sh:class googleads:DataPartnerIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ProductLink/googleAds> ;
    sh:name "google ads" ;
    sh:description "Immutable. Google Ads link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:GoogleAdsIdentifierShape ;
    sh:class googleads:GoogleAdsIdentifier ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Merchant Center Identifier
googleads:MerchantCenterIdentifierShape a sh:NodeShape ;
  sh:targetClass googleads:MerchantCenterIdentifier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MerchantCenterIdentifier/merchantCenterId> ;
    sh:name "merchant center id" ;
    sh:description "Immutable. The customer ID of the Google Merchant Center account. This field is required and should not be empty when creating a new Merchant Center link. It is unable to be modified after the creation of the link." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Shared Set
googleads:SharedSetShape a sh:NodeShape ;
  sh:targetClass googleads:SharedSet ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/verticalAdsItemVerticalType> ;
    sh:name "vertical ads item vertical type" ;
    sh:description "Immutable. Shared sets of type VERTICAL_ADS_ITEM_GROUP_RULE_LIST are associated with a particular vertical (e.g. hotels, things to do, flights, etc.). This field is required for shared sets of type VERTICAL_ADS_ITEM_GROUP_RULE_LIST." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "HOTELS" "VACATION_RENTALS" "RENTAL_CARS" "EVENTS" "THINGS_TO_DO" "FLIGHTS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of this shared set. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/name> ;
    sh:name "name" ;
    sh:description "The name of this shared set. Required. Shared Sets must have names that are unique among active shared sets of the same type. The length of this string should be between 1 and 255 UTF-8 bytes, inclusive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/status> ;
    sh:name "status" ;
    sh:description "Output only. The status of this shared set. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "REMOVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/memberCount> ;
    sh:name "member count" ;
    sh:description "Output only. The number of shared criteria within this shared set. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/type> ;
    sh:name "type" ;
    sh:description "Immutable. The type of this shared set: each shared set holds only a single kind of resource. Required. Immutable." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NEGATIVE_KEYWORDS" "NEGATIVE_PLACEMENTS" "ACCOUNT_LEVEL_NEGATIVE_KEYWORDS" "BRANDS" "WEBPAGES" "VERTICAL_ADS_ITEM_GROUP_RULE_LIST" "RETAIL_FILTER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the shared set. Shared set resource names have the form: `customers/{customer_id}/sharedSets/{shared_set_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SharedSet/referenceCount> ;
    sh:name "reference count" ;
    sh:description "Output only. The number of campaigns associated with this shared set. Read only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for User List
googleads:UserListShape a sh:NodeShape ;
  sh:targetClass googleads:UserList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/membershipLifeSpan> ;
    sh:name "membership life span" ;
    sh:description "Number of days a user's cookie stays on your list since its most recent addition to the list. This field must be between 0 and 540 inclusive. This field is ignored for `logical_user_list` and `rule_based_user_list` types. Membership to lists of these types depends on the rules defined by the lists." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/sizeForDisplay> ;
    sh:name "size for display" ;
    sh:description "Output only. Estimated number of users in this user list, on the Google Display Network. This value is null if the number of users has not yet been determined. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the user list. User list resource names have the form: `customers/{customer_id}/userLists/{user_list_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/accountUserListStatus> ;
    sh:name "account user list status" ;
    sh:description "Indicates if this share is still enabled. When a UserList is shared with the user this field is set to ENABLED. Later the userList owner can decide to revoke the share and make it DISABLED. The default value of this field is set to ENABLED." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ENABLED" "DISABLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/accessReason> ;
    sh:name "access reason" ;
    sh:description "Output only. Indicates the reason this account has been granted access to the list. The reason can be SHARED, OWNED, LICENSED or SUBSCRIBED. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OWNED" "SHARED" "LICENSED" "SUBSCRIBED" "AFFILIATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/sizeRangeForDisplay> ;
    sh:name "size range for display" ;
    sh:description "Output only. Size range in terms of number of users of the UserList, on the Google Display Network. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LESS_THAN_FIVE_HUNDRED" "LESS_THAN_ONE_THOUSAND" "ONE_THOUSAND_TO_TEN_THOUSAND" "TEN_THOUSAND_TO_FIFTY_THOUSAND" "FIFTY_THOUSAND_TO_ONE_HUNDRED_THOUSAND" "ONE_HUNDRED_THOUSAND_TO_THREE_HUNDRED_THOUSAND" "THREE_HUNDRED_THOUSAND_TO_FIVE_HUNDRED_THOUSAND" "FIVE_HUNDRED_THOUSAND_TO_ONE_MILLION" "ONE_MILLION_TO_TWO_MILLION" "TWO_MILLION_TO_THREE_MILLION" "THREE_MILLION_TO_FIVE_MILLION" "FIVE_MILLION_TO_TEN_MILLION" "TEN_MILLION_TO_TWENTY_MILLION" "TWENTY_MILLION_TO_THIRTY_MILLION" "THIRTY_MILLION_TO_FIFTY_MILLION" "OVER_FIFTY_MILLION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/basicUserList> ;
    sh:name "basic user list" ;
    sh:description "User list targeting as a collection of conversion or remarketing actions." ;
    sh:node googleads:BasicUserListInfoShape ;
    sh:class googleads:BasicUserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/id> ;
    sh:name "id" ;
    sh:description "Output only. Id of the user list." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/membershipStatus> ;
    sh:name "membership status" ;
    sh:description "Membership status of this user list. Indicates whether a user list is open or active. Only open user lists can accumulate more users and can be targeted to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OPEN" "CLOSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/similarUserList> ;
    sh:name "similar user list" ;
    sh:description "Output only. User list which are similar to users from another UserList. These lists are readonly and automatically created by google." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:SimilarUserListInfoShape ;
    sh:class googleads:SimilarUserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/description> ;
    sh:name "description" ;
    sh:description "Description of this user list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/ruleBasedUserList> ;
    sh:name "rule based user list" ;
    sh:description "User list generated by a rule." ;
    sh:node googleads:RuleBasedUserListInfoShape ;
    sh:class googleads:RuleBasedUserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/sizeRangeForSearch> ;
    sh:name "size range for search" ;
    sh:description "Output only. Size range in terms of number of users of the UserList, for Search ads. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "LESS_THAN_FIVE_HUNDRED" "LESS_THAN_ONE_THOUSAND" "ONE_THOUSAND_TO_TEN_THOUSAND" "TEN_THOUSAND_TO_FIFTY_THOUSAND" "FIFTY_THOUSAND_TO_ONE_HUNDRED_THOUSAND" "ONE_HUNDRED_THOUSAND_TO_THREE_HUNDRED_THOUSAND" "THREE_HUNDRED_THOUSAND_TO_FIVE_HUNDRED_THOUSAND" "FIVE_HUNDRED_THOUSAND_TO_ONE_MILLION" "ONE_MILLION_TO_TWO_MILLION" "TWO_MILLION_TO_THREE_MILLION" "THREE_MILLION_TO_FIVE_MILLION" "FIVE_MILLION_TO_TEN_MILLION" "TEN_MILLION_TO_TWENTY_MILLION" "TWENTY_MILLION_TO_THIRTY_MILLION" "THIRTY_MILLION_TO_FIFTY_MILLION" "OVER_FIFTY_MILLION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/integrationCode> ;
    sh:name "integration code" ;
    sh:description "An ID from external system. It is used by user list sellers to correlate IDs on their systems." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/lookalikeUserList> ;
    sh:name "lookalike user list" ;
    sh:description "Immutable. Lookalike User List." ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:node googleads:LookalikeUserListInfoShape ;
    sh:class googleads:LookalikeUserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/logicalUserList> ;
    sh:name "logical user list" ;
    sh:description "User list that is a custom combination of user lists and user interests." ;
    sh:node googleads:LogicalUserListInfoShape ;
    sh:class googleads:LogicalUserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/crmBasedUserList> ;
    sh:name "crm based user list" ;
    sh:description "User list of CRM users provided by the advertiser." ;
    sh:node googleads:CrmBasedUserListInfoShape ;
    sh:class googleads:CrmBasedUserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/type> ;
    sh:name "type" ;
    sh:description "Output only. Type of this list. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REMARKETING" "LOGICAL" "EXTERNAL_REMARKETING" "RULE_BASED" "SIMILAR" "CRM_BASED" "LOOKALIKE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/eligibleForDisplay> ;
    sh:name "eligible for display" ;
    sh:description "Output only. Indicates this user list is eligible for Google Display Network. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/readOnly> ;
    sh:name "read only" ;
    sh:description "Output only. An option that indicates if a user may edit a list. Depends on the list ownership and list type. For example, external remarketing user lists are not editable. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/closingReason> ;
    sh:name "closing reason" ;
    sh:description "Indicating the reason why this user list membership status is closed. It is only populated on lists that were automatically closed due to inactivity, and will be cleared once the list membership status becomes open." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "UNUSED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/eligibleForSearch> ;
    sh:name "eligible for search" ;
    sh:description "Indicates if this user list is eligible for Google Search Network." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/name> ;
    sh:name "name" ;
    sh:description "Name of this user list. Unique per user list, except in some cases where a user list of the same name has `access_reason` set to `SHARED`." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/sizeForSearch> ;
    sh:name "size for search" ;
    sh:description "Output only. Estimated number of users in this user list in the google.com domain. These are the users available for targeting in Search campaigns. This value is null if the number of users has not yet been determined. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserList/matchRatePercentage> ;
    sh:name "match rate percentage" ;
    sh:description "Output only. Indicates match rate for Customer Match lists. The range of this field is [0-100]. This will be null for other list types or when it's not possible to calculate the match rate. This field is read-only." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Similar User List Info
googleads:SimilarUserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:SimilarUserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.SimilarUserListInfo/seedUserList> ;
    sh:name "seed user list" ;
    sh:description "Seed UserList from which this list is derived." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Rule Based User List Info
googleads:RuleBasedUserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:RuleBasedUserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RuleBasedUserListInfo/prepopulationStatus> ;
    sh:name "prepopulation status" ;
    sh:description "The status of pre-population. The field is default to NONE if not set which means the previous users will not be considered. If set to REQUESTED, past site visitors or app users who match the list definition will be included in the list (works on the Display Network only). This will only add past users from within the last 30 days, depending on the list's membership duration and the date when the remarketing tag is added. The status will be updated to FINISHED once request is processed, or FAILED if the request fails." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "REQUESTED" "FINISHED" "FAILED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RuleBasedUserListInfo/flexibleRuleUserList> ;
    sh:name "flexible rule user list" ;
    sh:description "Flexible rule representation of visitors with one or multiple actions. The flexible user list is defined by two lists of operands – inclusive_operands and exclusive_operands; each operand represents a set of users based on actions they took in a given timeframe. These lists of operands are combined with the AND_NOT operator, so that users represented by the inclusive operands are included in the user list, minus the users represented by the exclusive operands." ;
    sh:class googleads:FlexibleRuleUserListInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Lookalike User List Info
googleads:LookalikeUserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LookalikeUserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LookalikeUserListInfo/countryCodes> ;
    sh:name "country codes" ;
    sh:description "Countries targeted by the Lookalike. Two-letter country code as defined by ISO-3166" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LookalikeUserListInfo/seedUserListIds> ;
    sh:name "seed user list ids" ;
    sh:description "Seed UserList ID from which this list is derived, provided by user." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LookalikeUserListInfo/expansionLevel> ;
    sh:name "expansion level" ;
    sh:description "Expansion level, reflecting the size of the lookalike audience" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "NARROW" "BALANCED" "BROAD" ) ;
  ] .

# Shape for Logical User List Info
googleads:LogicalUserListInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LogicalUserListInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LogicalUserListInfo/rules> ;
    sh:name "rules" ;
    sh:description "Logical list rules that define this user list. The rules are defined as a logical operator (ALL/ANY/NONE) and a list of user lists. All the rules are ANDed when they are evaluated. Required for creating a logical user list." ;
    sh:node googleads:UserListLogicalRuleInfoShape ;
    sh:class googleads:UserListLogicalRuleInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for User List Logical Rule Info
googleads:UserListLogicalRuleInfoShape a sh:NodeShape ;
  sh:targetClass googleads:UserListLogicalRuleInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListLogicalRuleInfo/operator> ;
    sh:name "operator" ;
    sh:description "The logical operator of the rule." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "ALL" "ANY" "NONE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.UserListLogicalRuleInfo/ruleOperands> ;
    sh:name "rule operands" ;
    sh:description "The list of operands of the rule." ;
    sh:node googleads:LogicalUserListOperandInfoShape ;
    sh:class googleads:LogicalUserListOperandInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Logical User List Operand Info
googleads:LogicalUserListOperandInfoShape a sh:NodeShape ;
  sh:targetClass googleads:LogicalUserListOperandInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LogicalUserListOperandInfo/userList> ;
    sh:name "user list" ;
    sh:description "Resource name of a user list as an operand." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Mobile App Category Constant
googleads:MobileAppCategoryConstantShape a sh:NodeShape ;
  sh:targetClass googleads:MobileAppCategoryConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppCategoryConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the mobile app category constant. Mobile app category constant resource names have the form: `mobileAppCategoryConstants/{mobile_app_category_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppCategoryConstant/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the mobile app category constant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileAppCategoryConstant/name> ;
    sh:name "name" ;
    sh:description "Output only. Mobile app category name." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation
googleads:RecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:Recommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingAddGtinRecommendation> ;
    sh:name "shopping add gtin recommendation" ;
    sh:description "Output only. The shopping add GTIN recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingOfferAttributeRecommendationShape ;
    sh:class googleads:RecommendationShoppingOfferAttributeRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/marginalRoiCampaignBudgetRecommendation> ;
    sh:name "marginal roi campaign budget recommendation" ;
    sh:description "Output only. The marginal ROI campaign budget recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCampaignBudgetRecommendationShape ;
    sh:class googleads:RecommendationCampaignBudgetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/keywordMatchTypeRecommendation> ;
    sh:name "keyword match type recommendation" ;
    sh:description "Output only. The keyword match type recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationKeywordMatchTypeRecommendationShape ;
    sh:class googleads:RecommendationKeywordMatchTypeRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/forecastingCampaignBudgetRecommendation> ;
    sh:name "forecasting campaign budget recommendation" ;
    sh:description "Output only. The forecasting campaign budget recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCampaignBudgetRecommendationShape ;
    sh:class googleads:RecommendationCampaignBudgetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "CAMPAIGN_BUDGET" "KEYWORD" "TEXT_AD" "TARGET_CPA_OPT_IN" "MAXIMIZE_CONVERSIONS_OPT_IN" "ENHANCED_CPC_OPT_IN" "SEARCH_PARTNERS_OPT_IN" "MAXIMIZE_CLICKS_OPT_IN" "OPTIMIZE_AD_ROTATION" "KEYWORD_MATCH_TYPE" "MOVE_UNUSED_BUDGET" "FORECASTING_CAMPAIGN_BUDGET" "TARGET_ROAS_OPT_IN" "RESPONSIVE_SEARCH_AD" "MARGINAL_ROI_CAMPAIGN_BUDGET" "USE_BROAD_MATCH_KEYWORD" "RESPONSIVE_SEARCH_AD_ASSET" "UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX" "RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH" "DISPLAY_EXPANSION_OPT_IN" "UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX" "RAISE_TARGET_CPA_BID_TOO_LOW" "FORECASTING_SET_TARGET_ROAS" "CALLOUT_ASSET" "SITELINK_ASSET" "CALL_ASSET" "SHOPPING_ADD_AGE_GROUP" "SHOPPING_ADD_COLOR" "SHOPPING_ADD_GENDER" "SHOPPING_ADD_GTIN" "SHOPPING_ADD_MORE_IDENTIFIERS" "SHOPPING_ADD_SIZE" "SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN" "SHOPPING_FIX_DISAPPROVED_PRODUCTS" "SHOPPING_TARGET_ALL_OFFERS" "SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT" "SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING" "SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX" "DYNAMIC_IMAGE_EXTENSION_OPT_IN" "RAISE_TARGET_CPA" "LOWER_TARGET_ROAS" "PERFORMANCE_MAX_OPT_IN" "IMPROVE_PERFORMANCE_MAX_AD_STRENGTH" "MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX" "FORECASTING_SET_TARGET_CPA" "SET_TARGET_CPA" "SET_TARGET_ROAS" "MAXIMIZE_CONVERSION_VALUE_OPT_IN" "IMPROVE_GOOGLE_TAG_COVERAGE" "PERFORMANCE_MAX_FINAL_URL_OPT_IN" "REFRESH_CUSTOMER_MATCH_LIST" "CUSTOM_AUDIENCE_OPT_IN" "LEAD_FORM_ASSET" "IMPROVE_DEMAND_GEN_AD_STRENGTH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingAddSizeRecommendation> ;
    sh:name "shopping add size recommendation" ;
    sh:description "Output only. The shopping add size recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingOfferAttributeRecommendationShape ;
    sh:class googleads:RecommendationShoppingOfferAttributeRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/forecastingSetTargetRoasRecommendation> ;
    sh:name "forecasting set target roas recommendation" ;
    sh:description "Output only. The forecasting set target ROAS recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationForecastingSetTargetRoasRecommendationShape ;
    sh:class googleads:RecommendationForecastingSetTargetRoasRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/upgradeLocalCampaignToPerformanceMaxRecommendation> ;
    sh:name "upgrade local campaign to performance max recommendation" ;
    sh:description "Output only. The upgrade a Local campaign to a Performance Max campaign recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationUpgradeLocalCampaignToPerformanceMaxRecommendationShape ;
    sh:class googleads:RecommendationUpgradeLocalCampaignToPerformanceMaxRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/keywordRecommendation> ;
    sh:name "keyword recommendation" ;
    sh:description "Output only. The keyword recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationKeywordRecommendationShape ;
    sh:class googleads:RecommendationKeywordRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/dynamicImageExtensionOptInRecommendation> ;
    sh:name "dynamic image extension opt in recommendation" ;
    sh:description "Output only. Recommendation to enable dynamic image extensions on the account, allowing Google to find the best images from ad landing pages and complement text ads." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationDynamicImageExtensionOptInRecommendationShape ;
    sh:class googleads:RecommendationDynamicImageExtensionOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/migrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation> ;
    sh:name "migrate dynamic search ads campaign to performance max recommendation" ;
    sh:description "Output only. The Dynamic Search Ads to Performance Max migration recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendationShape ;
    sh:class googleads:RecommendationMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/performanceMaxFinalUrlOptInRecommendation> ;
    sh:name "performance max final url opt in recommendation" ;
    sh:description "Output only. Recommendation to turn on Final URL expansion for your Performance Max campaigns." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationPerformanceMaxFinalUrlOptInRecommendationShape ;
    sh:class googleads:RecommendationPerformanceMaxFinalUrlOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/campaigns> ;
    sh:name "campaigns" ;
    sh:description "Output only. The campaigns targeted by this recommendation. This field will be set for the following recommendation types: CAMPAIGN_BUDGET, FORECASTING_CAMPAIGN_BUDGET, MARGINAL_ROI_CAMPAIGN_BUDGET and MOVE_UNUSED_BUDGET" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/setTargetRoasRecommendation> ;
    sh:name "set target roas recommendation" ;
    sh:description "Output only. The set target ROAS recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationForecastingSetTargetRoasRecommendationShape ;
    sh:class googleads:RecommendationForecastingSetTargetRoasRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/responsiveSearchAdImproveAdStrengthRecommendation> ;
    sh:name "responsive search ad improve ad strength recommendation" ;
    sh:description "Output only. The responsive search ad improve ad strength recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:RecommendationResponsiveSearchAdImproveAdStrengthRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/lowerTargetRoasRecommendation> ;
    sh:name "lower target roas recommendation" ;
    sh:description "Output only. Recommendation to lower Target ROAS." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationLowerTargetRoasRecommendationShape ;
    sh:class googleads:RecommendationLowerTargetRoasRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingFixMerchantCenterAccountSuspensionWarningRecommendation> ;
    sh:name "shopping fix merchant center account suspension warning recommendation" ;
    sh:description "Output only. The shopping fix Merchant Center account suspension warning recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingMerchantCenterAccountSuspensionRecommendationShape ;
    sh:class googleads:RecommendationShoppingMerchantCenterAccountSuspensionRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/textAdRecommendation> ;
    sh:name "text ad recommendation" ;
    sh:description "Output only. Add expanded text ad recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:RecommendationTextAdRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/targetCpaOptInRecommendation> ;
    sh:name "target cpa opt in recommendation" ;
    sh:description "Output only. The TargetCPA opt-in recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationTargetCpaOptInRecommendationShape ;
    sh:class googleads:RecommendationTargetCpaOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/improvePerformanceMaxAdStrengthRecommendation> ;
    sh:name "improve performance max ad strength recommendation" ;
    sh:description "Output only. The improve Performance Max ad strength recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationImprovePerformanceMaxAdStrengthRecommendationShape ;
    sh:class googleads:RecommendationImprovePerformanceMaxAdStrengthRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/forecastingSetTargetCpaRecommendation> ;
    sh:name "forecasting set target cpa recommendation" ;
    sh:description "Output only. The forecasting set target CPA recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationForecastingSetTargetCpaRecommendationShape ;
    sh:class googleads:RecommendationForecastingSetTargetCpaRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/maximizeClicksOptInRecommendation> ;
    sh:name "maximize clicks opt in recommendation" ;
    sh:description "Output only. The MaximizeClicks Opt-In recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMaximizeClicksOptInRecommendationShape ;
    sh:class googleads:RecommendationMaximizeClicksOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/campaignBudget> ;
    sh:name "campaign budget" ;
    sh:description "Output only. The budget targeted by this recommendation. This will be set only when the recommendation affects a single campaign budget. This field will be set for the following recommendation types: CAMPAIGN_BUDGET, FORECASTING_CAMPAIGN_BUDGET, MARGINAL_ROI_CAMPAIGN_BUDGET, MOVE_UNUSED_BUDGET" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/performanceMaxOptInRecommendation> ;
    sh:name "performance max opt in recommendation" ;
    sh:description "Output only. The Performance Max Opt In recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationPerformanceMaxOptInRecommendationShape ;
    sh:class googleads:RecommendationPerformanceMaxOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingTargetAllOffersRecommendation> ;
    sh:name "shopping target all offers recommendation" ;
    sh:description "Output only. The shopping target all offers recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingTargetAllOffersRecommendationShape ;
    sh:class googleads:RecommendationShoppingTargetAllOffersRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingFixSuspendedMerchantCenterAccountRecommendation> ;
    sh:name "shopping fix suspended merchant center account recommendation" ;
    sh:description "Output only. The shopping fix suspended Merchant Center account recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingMerchantCenterAccountSuspensionRecommendationShape ;
    sh:class googleads:RecommendationShoppingMerchantCenterAccountSuspensionRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingAddColorRecommendation> ;
    sh:name "shopping add color recommendation" ;
    sh:description "Output only. The shopping add color recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingOfferAttributeRecommendationShape ;
    sh:class googleads:RecommendationShoppingOfferAttributeRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/improveDemandGenAdStrengthRecommendation> ;
    sh:name "improve demand gen ad strength recommendation" ;
    sh:description "Output only. The improve Demand Gen ad strength recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationImproveDemandGenAdStrengthRecommendationShape ;
    sh:class googleads:RecommendationImproveDemandGenAdStrengthRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/responsiveSearchAdAssetRecommendation> ;
    sh:name "responsive search ad asset recommendation" ;
    sh:description "Output only. The responsive search ad asset recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:RecommendationResponsiveSearchAdAssetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingAddMoreIdentifiersRecommendation> ;
    sh:name "shopping add more identifiers recommendation" ;
    sh:description "Output only. The shopping add more identifiers recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingOfferAttributeRecommendationShape ;
    sh:class googleads:RecommendationShoppingOfferAttributeRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/raiseTargetCpaBidTooLowRecommendation> ;
    sh:name "raise target cpa bid too low recommendation" ;
    sh:description "Output only. The raise target CPA bid too low recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRaiseTargetCpaBidTooLowRecommendationShape ;
    sh:class googleads:RecommendationRaiseTargetCpaBidTooLowRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingAddAgeGroupRecommendation> ;
    sh:name "shopping add age group recommendation" ;
    sh:description "Output only. The shopping add age group recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingOfferAttributeRecommendationShape ;
    sh:class googleads:RecommendationShoppingOfferAttributeRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/moveUnusedBudgetRecommendation> ;
    sh:name "move unused budget recommendation" ;
    sh:description "Output only. The move unused budget recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMoveUnusedBudgetRecommendationShape ;
    sh:class googleads:RecommendationMoveUnusedBudgetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingAddGenderRecommendation> ;
    sh:name "shopping add gender recommendation" ;
    sh:description "Output only. The shopping add gender recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingOfferAttributeRecommendationShape ;
    sh:class googleads:RecommendationShoppingOfferAttributeRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/useBroadMatchKeywordRecommendation> ;
    sh:name "use broad match keyword recommendation" ;
    sh:description "Output only. The use broad match keyword recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationUseBroadMatchKeywordRecommendationShape ;
    sh:class googleads:RecommendationUseBroadMatchKeywordRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingFixDisapprovedProductsRecommendation> ;
    sh:name "shopping fix disapproved products recommendation" ;
    sh:description "Output only. The shopping fix disapproved products recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingFixDisapprovedProductsRecommendationShape ;
    sh:class googleads:RecommendationShoppingFixDisapprovedProductsRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingAddProductsToCampaignRecommendation> ;
    sh:name "shopping add products to campaign recommendation" ;
    sh:description "Output only. The shopping add products to campaign recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingAddProductsToCampaignRecommendationShape ;
    sh:class googleads:RecommendationShoppingAddProductsToCampaignRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/maximizeConversionValueOptInRecommendation> ;
    sh:name "maximize conversion value opt in recommendation" ;
    sh:description "Output only. The Maximize Conversion Value opt-in recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMaximizeConversionValueOptInRecommendationShape ;
    sh:class googleads:RecommendationMaximizeConversionValueOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/callAssetRecommendation> ;
    sh:name "call asset recommendation" ;
    sh:description "Output only. The call asset recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCallAssetRecommendationShape ;
    sh:class googleads:RecommendationCallAssetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/refreshCustomerMatchListRecommendation> ;
    sh:name "refresh customer match list recommendation" ;
    sh:description "Output only. The refresh customer list recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRefreshCustomerMatchListRecommendationShape ;
    sh:class googleads:RecommendationRefreshCustomerMatchListRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/enhancedCpcOptInRecommendation> ;
    sh:name "enhanced cpc opt in recommendation" ;
    sh:description "Output only. The Enhanced Cost-Per-Click Opt-In recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationEnhancedCpcOptInRecommendationShape ;
    sh:class googleads:RecommendationEnhancedCpcOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/searchPartnersOptInRecommendation> ;
    sh:name "search partners opt in recommendation" ;
    sh:description "Output only. The Search Partners Opt-In recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationSearchPartnersOptInRecommendationShape ;
    sh:class googleads:RecommendationSearchPartnersOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/upgradeSmartShoppingCampaignToPerformanceMaxRecommendation> ;
    sh:name "upgrade smart shopping campaign to performance max recommendation" ;
    sh:description "Output only. The upgrade a Smart Shopping campaign to a Performance Max campaign recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationUpgradeSmartShoppingCampaignToPerformanceMaxRecommendationShape ;
    sh:class googleads:RecommendationUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/leadFormAssetRecommendation> ;
    sh:name "lead form asset recommendation" ;
    sh:description "Output only. The lead form asset recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationLeadFormAssetRecommendationShape ;
    sh:class googleads:RecommendationLeadFormAssetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/maximizeConversionsOptInRecommendation> ;
    sh:name "maximize conversions opt in recommendation" ;
    sh:description "Output only. The MaximizeConversions Opt-In recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMaximizeConversionsOptInRecommendationShape ;
    sh:class googleads:RecommendationMaximizeConversionsOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/sitelinkAssetRecommendation> ;
    sh:name "sitelink asset recommendation" ;
    sh:description "Output only. The sitelink asset recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationSitelinkAssetRecommendationShape ;
    sh:class googleads:RecommendationSitelinkAssetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/setTargetCpaRecommendation> ;
    sh:name "set target cpa recommendation" ;
    sh:description "Output only. The set target CPA recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationForecastingSetTargetCpaRecommendationShape ;
    sh:class googleads:RecommendationForecastingSetTargetCpaRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/dismissed> ;
    sh:name "dismissed" ;
    sh:description "Output only. Whether the recommendation is dismissed or not." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/optimizeAdRotationRecommendation> ;
    sh:name "optimize ad rotation recommendation" ;
    sh:description "Output only. The Optimize Ad Rotation recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationOptimizeAdRotationRecommendationShape ;
    sh:class googleads:RecommendationOptimizeAdRotationRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/customAudienceOptInRecommendation> ;
    sh:name "custom audience opt in recommendation" ;
    sh:description "Output only. The custom audience opt in recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCustomAudienceOptInRecommendationShape ;
    sh:class googleads:RecommendationCustomAudienceOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/calloutAssetRecommendation> ;
    sh:name "callout asset recommendation" ;
    sh:description "Output only. The callout asset recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCalloutAssetRecommendationShape ;
    sh:class googleads:RecommendationCalloutAssetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/impact> ;
    sh:name "impact" ;
    sh:description "Output only. The impact on account performance as a result of applying the recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRecommendationImpactShape ;
    sh:class googleads:RecommendationRecommendationImpact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/shoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation> ;
    sh:name "shopping migrate regular shopping campaign offers to performance max recommendation" ;
    sh:description "Output only. The shopping migrate Regular Shopping Campaign offers to Performance Max recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendationShape ;
    sh:class googleads:RecommendationShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/displayExpansionOptInRecommendation> ;
    sh:name "display expansion opt in recommendation" ;
    sh:description "Output only. The Display Expansion opt-in recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationDisplayExpansionOptInRecommendationShape ;
    sh:class googleads:RecommendationDisplayExpansionOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/raiseTargetCpaRecommendation> ;
    sh:name "raise target cpa recommendation" ;
    sh:description "Output only. Recommendation to raise Target CPA." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRaiseTargetCpaRecommendationShape ;
    sh:class googleads:RecommendationRaiseTargetCpaRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/campaign> ;
    sh:name "campaign" ;
    sh:description "Output only. The campaign targeted by this recommendation. This field will be set for the following recommendation types: CALL_EXTENSION, CALLOUT_EXTENSION, ENHANCED_CPC_OPT_IN, USE_BROAD_MATCH_KEYWORD, KEYWORD, KEYWORD_MATCH_TYPE, UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX, MAXIMIZE_CLICKS_OPT_IN, MAXIMIZE_CONVERSIONS_OPT_IN, OPTIMIZE_AD_ROTATION, RESPONSIVE_SEARCH_AD, RESPONSIVE_SEARCH_AD_ASSET, SEARCH_PARTNERS_OPT_IN, DISPLAY_EXPANSION_OPT_IN, SITELINK_EXTENSION, TARGET_CPA_OPT_IN, TARGET_ROAS_OPT_IN, TEXT_AD, UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX, RAISE_TARGET_CPA_BID_TOO_LOW, FORECASTING_SET_TARGET_ROAS, SHOPPING_ADD_AGE_GROUP, SHOPPING_ADD_COLOR, SHOPPING_ADD_GENDER, SHOPPING_ADD_SIZE, SHOPPING_ADD_GTIN, SHOPPING_ADD_MORE_IDENTIFIERS, SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN, SHOPPING_FIX_DISAPPROVED_PRODUCTS, SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX, DYNAMIC_IMAGE_EXTENSION_OPT_IN, RAISE_TARGET_CPA, LOWER_TARGET_ROAS, FORECASTING_SET_TARGET_CPA, SET_TARGET_CPA, SET_TARGET_ROAS, MAXIMIZE_CONVERSION_VALUE_OPT_IN, IMPROVE_GOOGLE_TAG_COVERAGE, PERFORMANCE_MAX_FINAL_URL_OPT_IN" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/resourceName> ;
    sh:name "resource name" ;
    sh:description "Immutable. The resource name of the recommendation. `customers/{customer_id}/recommendations/{recommendation_id}`" ;
    relay:writeLifecycle relay:CreateOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/targetRoasOptInRecommendation> ;
    sh:name "target roas opt in recommendation" ;
    sh:description "Output only. The Target ROAS opt-in recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationTargetRoasOptInRecommendationShape ;
    sh:class googleads:RecommendationTargetRoasOptInRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/adGroup> ;
    sh:name "ad group" ;
    sh:description "Output only. The ad group targeted by this recommendation. This will be set only when the recommendation affects a single ad group. This field will be set for the following recommendation types: KEYWORD, OPTIMIZE_AD_ROTATION, RESPONSIVE_SEARCH_AD, RESPONSIVE_SEARCH_AD_ASSET, TEXT_AD" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/campaignBudgetRecommendation> ;
    sh:name "campaign budget recommendation" ;
    sh:description "Output only. The campaign budget recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCampaignBudgetRecommendationShape ;
    sh:class googleads:RecommendationCampaignBudgetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/improveGoogleTagCoverageRecommendation> ;
    sh:name "improve google tag coverage recommendation" ;
    sh:description "Output only. Recommendation to deploy Google Tag on more pages." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationImproveGoogleTagCoverageRecommendationShape ;
    sh:class googleads:RecommendationImproveGoogleTagCoverageRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.Recommendation/responsiveSearchAdRecommendation> ;
    sh:name "responsive search ad recommendation" ;
    sh:description "Output only. The add responsive search ad recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:RecommendationResponsiveSearchAdRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Shopping Offer Attribute Recommendation
googleads:RecommendationShoppingOfferAttributeRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationShoppingOfferAttributeRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingOfferAttributeRecommendation/offersCount> ;
    sh:name "offers count" ;
    sh:description "Output only. The number of online, servable offers." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingOfferAttributeRecommendation/merchant> ;
    sh:name "merchant" ;
    sh:description "Output only. The details of the Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMerchantInfoShape ;
    sh:class googleads:RecommendationMerchantInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingOfferAttributeRecommendation/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Output only. The campaign feed label." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingOfferAttributeRecommendation/demotedOffersCount> ;
    sh:name "demoted offers count" ;
    sh:description "Output only. The number of online, servable offers that are demoted for missing attributes. Visit the Merchant Center for more details." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Merchant Info
googleads:RecommendationMerchantInfoShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationMerchantInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMerchantInfo/id> ;
    sh:name "id" ;
    sh:description "Output only. The Merchant Center account ID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMerchantInfo/name> ;
    sh:name "name" ;
    sh:description "Output only. The name of the Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMerchantInfo/multiClient> ;
    sh:name "multi client" ;
    sh:description "Output only. Whether the Merchant Center account is a Multi-Client account (MCA)." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Campaign Budget Recommendation
googleads:RecommendationCampaignBudgetRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationCampaignBudgetRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudgetRecommendation/recommendedBudgetAmountMicros> ;
    sh:name "recommended budget amount micros" ;
    sh:description "Output only. The recommended budget amount in micros." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudgetRecommendation/budgetOptions> ;
    sh:name "budget options" ;
    sh:description "Output only. The budget amounts and associated impact estimates for some values of possible budget amounts." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCampaignBudgetRecommendationCampaignBudgetRecommendationOptionShape ;
    sh:class googleads:RecommendationCampaignBudgetRecommendationCampaignBudgetRecommendationOption ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudgetRecommendation/currentBudgetAmountMicros> ;
    sh:name "current budget amount micros" ;
    sh:description "Output only. The current budget amount in micros." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Campaign Budget Recommendation Campaign Budget Recommendation Option
googleads:RecommendationCampaignBudgetRecommendationCampaignBudgetRecommendationOptionShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationCampaignBudgetRecommendationCampaignBudgetRecommendationOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudgetRecommendationCampaignBudgetRecommendationOption/budgetAmountMicros> ;
    sh:name "budget amount micros" ;
    sh:description "Output only. The budget amount for this option." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudgetRecommendationCampaignBudgetRecommendationOption/impact> ;
    sh:name "impact" ;
    sh:description "Output only. The impact estimate if budget is changed to amount specified in this option." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRecommendationImpactShape ;
    sh:class googleads:RecommendationRecommendationImpact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Recommendation Impact
googleads:RecommendationRecommendationImpactShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationRecommendationImpact ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationImpact/baseMetrics> ;
    sh:name "base metrics" ;
    sh:description "Output only. Base metrics at the time the recommendation was generated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRecommendationMetricsShape ;
    sh:class googleads:RecommendationRecommendationMetrics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationImpact/potentialMetrics> ;
    sh:name "potential metrics" ;
    sh:description "Output only. Estimated metrics if the recommendation is applied." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRecommendationMetricsShape ;
    sh:class googleads:RecommendationRecommendationMetrics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Recommendation Metrics
googleads:RecommendationRecommendationMetricsShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationRecommendationMetrics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationMetrics/impressions> ;
    sh:name "impressions" ;
    sh:description "Output only. Number of ad impressions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationMetrics/conversions> ;
    sh:name "conversions" ;
    sh:description "Output only. Number of conversions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationMetrics/clicks> ;
    sh:name "clicks" ;
    sh:description "Output only. Number of ad clicks." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationMetrics/conversionsValue> ;
    sh:name "conversions value" ;
    sh:description "Output only. Sum of the conversion value of the conversions." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationMetrics/costMicros> ;
    sh:name "cost micros" ;
    sh:description "Output only. Cost (in micros) for advertising, in the local currency for the account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRecommendationMetrics/videoViews> ;
    sh:name "video views" ;
    sh:description "Output only. Number of video views for a video ad campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Keyword Match Type Recommendation
googleads:RecommendationKeywordMatchTypeRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationKeywordMatchTypeRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationKeywordMatchTypeRecommendation/keyword> ;
    sh:name "keyword" ;
    sh:description "Output only. The existing keyword where the match type should be more broad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationKeywordMatchTypeRecommendation/recommendedMatchType> ;
    sh:name "recommended match type" ;
    sh:description "Output only. The recommended new match type." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "EXACT" "PHRASE" "BROAD" ) ;
  ] .

# Shape for Recommendation Forecasting Set Target Roas Recommendation
googleads:RecommendationForecastingSetTargetRoasRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationForecastingSetTargetRoasRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationForecastingSetTargetRoasRecommendation/campaignBudget> ;
    sh:name "campaign budget" ;
    sh:description "Output only. The campaign budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCampaignBudgetShape ;
    sh:class googleads:RecommendationCampaignBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationForecastingSetTargetRoasRecommendation/recommendedTargetRoas> ;
    sh:name "recommended target roas" ;
    sh:description "Output only. The recommended target ROAS (revenue per unit of spend). The value is between 0.01 and 1000.0, inclusive." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Campaign Budget
googleads:RecommendationCampaignBudgetShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationCampaignBudget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudget/newStartDate> ;
    sh:name "new start date" ;
    sh:description "Output only. The date when the new budget would start being used. This field will be set for the following recommendation types: FORECASTING_SET_TARGET_ROAS , FORECASTING_SET_TARGET_CPA YYYY-MM-DD format, for example, 2018-04-17." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudget/currentAmountMicros> ;
    sh:name "current amount micros" ;
    sh:description "Output only. Current budget amount." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCampaignBudget/recommendedNewAmountMicros> ;
    sh:name "recommended new amount micros" ;
    sh:description "Output only. Recommended budget amount." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Upgrade Local Campaign To Performance Max Recommendation
googleads:RecommendationUpgradeLocalCampaignToPerformanceMaxRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationUpgradeLocalCampaignToPerformanceMaxRecommendation .

# Shape for Recommendation Keyword Recommendation
googleads:RecommendationKeywordRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationKeywordRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationKeywordRecommendation/searchTerms> ;
    sh:name "search terms" ;
    sh:description "Output only. A list of search terms this keyword matches. The same search term may be repeated for multiple keywords." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationKeywordRecommendationSearchTermShape ;
    sh:class googleads:RecommendationKeywordRecommendationSearchTerm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationKeywordRecommendation/keyword> ;
    sh:name "keyword" ;
    sh:description "Output only. The recommended keyword." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationKeywordRecommendation/recommendedCpcBidMicros> ;
    sh:name "recommended cpc bid micros" ;
    sh:description "Output only. The recommended CPC (cost-per-click) bid." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Keyword Recommendation Search Term
googleads:RecommendationKeywordRecommendationSearchTermShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationKeywordRecommendationSearchTerm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationKeywordRecommendationSearchTerm/text> ;
    sh:name "text" ;
    sh:description "Output only. The text of the search term." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationKeywordRecommendationSearchTerm/estimatedWeeklySearchCount> ;
    sh:name "estimated weekly search count" ;
    sh:description "Output only. Estimated number of historical weekly searches for this search term." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Dynamic Image Extension Opt In Recommendation
googleads:RecommendationDynamicImageExtensionOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationDynamicImageExtensionOptInRecommendation .

# Shape for Recommendation Migrate Dynamic Search Ads Campaign To Performance Max Recommendation
googleads:RecommendationMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation/applyLink> ;
    sh:name "apply link" ;
    sh:description "Output only. A link to the Google Ads UI where the customer can manually apply the recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Performance Max Final Url Opt In Recommendation
googleads:RecommendationPerformanceMaxFinalUrlOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationPerformanceMaxFinalUrlOptInRecommendation .

# Shape for Recommendation Responsive Search Ad Improve Ad Strength Recommendation
googleads:RecommendationResponsiveSearchAdImproveAdStrengthRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationResponsiveSearchAdImproveAdStrengthRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationResponsiveSearchAdImproveAdStrengthRecommendation/currentAd> ;
    sh:name "current ad" ;
    sh:description "Output only. The current ad to be updated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationResponsiveSearchAdImproveAdStrengthRecommendation/recommendedAd> ;
    sh:name "recommended ad" ;
    sh:description "Output only. The updated ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Lower Target Roas Recommendation
googleads:RecommendationLowerTargetRoasRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationLowerTargetRoasRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationLowerTargetRoasRecommendation/targetAdjustment> ;
    sh:name "target adjustment" ;
    sh:description "Output only. The relevant information describing the recommended target adjustment." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationTargetAdjustmentInfoShape ;
    sh:class googleads:RecommendationTargetAdjustmentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Target Adjustment Info
googleads:RecommendationTargetAdjustmentInfoShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationTargetAdjustmentInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetAdjustmentInfo/currentAverageTargetMicros> ;
    sh:name "current average target micros" ;
    sh:description "Output only. The current average target of the campaign or portfolio targeted by this recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetAdjustmentInfo/recommendedTargetMultiplier> ;
    sh:name "recommended target multiplier" ;
    sh:description "Output only. The factor by which we recommend the target to be adjusted by." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetAdjustmentInfo/sharedSet> ;
    sh:name "shared set" ;
    sh:description "Output only. The shared set resource name of the portfolio bidding strategy where the target is defined. Only populated if the recommendation is portfolio level." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Shopping Merchant Center Account Suspension Recommendation
googleads:RecommendationShoppingMerchantCenterAccountSuspensionRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationShoppingMerchantCenterAccountSuspensionRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingMerchantCenterAccountSuspensionRecommendation/merchant> ;
    sh:name "merchant" ;
    sh:description "Output only. The details of the Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMerchantInfoShape ;
    sh:class googleads:RecommendationMerchantInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingMerchantCenterAccountSuspensionRecommendation/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Output only. The feed label of the campaign for which the suspension happened." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Text Ad Recommendation
googleads:RecommendationTextAdRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationTextAdRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTextAdRecommendation/creationDate> ;
    sh:name "creation date" ;
    sh:description "Output only. Creation date of the recommended ad. YYYY-MM-DD format, for example, 2018-04-17." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTextAdRecommendation/autoApplyDate> ;
    sh:name "auto apply date" ;
    sh:description "Output only. Date, if present, is the earliest when the recommendation will be auto applied. YYYY-MM-DD format, for example, 2018-04-17." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTextAdRecommendation/ad> ;
    sh:name "ad" ;
    sh:description "Output only. Recommended ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Target Cpa Opt In Recommendation
googleads:RecommendationTargetCpaOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationTargetCpaOptInRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetCpaOptInRecommendation/options> ;
    sh:name "options" ;
    sh:description "Output only. The available goals and corresponding options for Target CPA strategy." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOptionShape ;
    sh:class googleads:RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOption ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetCpaOptInRecommendation/recommendedTargetCpaMicros> ;
    sh:name "recommended target cpa micros" ;
    sh:description "Output only. The recommended average CPA target. See required budget amount and impact of using this recommendation in options list." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Target Cpa Opt In Recommendation Target Cpa Opt In Recommendation Option
googleads:RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOptionShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOption/impact> ;
    sh:name "impact" ;
    sh:description "Output only. The impact estimate if this option is selected." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationRecommendationImpactShape ;
    sh:class googleads:RecommendationRecommendationImpact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOption/goal> ;
    sh:name "goal" ;
    sh:description "Output only. The goal achieved by this option." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "SAME_COST" "SAME_CONVERSIONS" "SAME_CPA" "CLOSEST_CPA" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOption/targetCpaMicros> ;
    sh:name "target cpa micros" ;
    sh:description "Output only. Average CPA target." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetCpaOptInRecommendationTargetCpaOptInRecommendationOption/requiredCampaignBudgetAmountMicros> ;
    sh:name "required campaign budget amount micros" ;
    sh:description "Output only. The minimum campaign budget, in local currency for the account, required to achieve the target CPA. Amount is specified in micros, where one million is equivalent to one currency unit." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Improve Performance Max Ad Strength Recommendation
googleads:RecommendationImprovePerformanceMaxAdStrengthRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationImprovePerformanceMaxAdStrengthRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationImprovePerformanceMaxAdStrengthRecommendation/assetGroup> ;
    sh:name "asset group" ;
    sh:description "Output only. The asset group resource name." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationImprovePerformanceMaxAdStrengthRecommendation/adStrength> ;
    sh:name "ad strength" ;
    sh:description "Output only. The current ad strength score of the asset group." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "NO_ADS" "POOR" "AVERAGE" "GOOD" "EXCELLENT" ) ;
  ] .

# Shape for Recommendation Forecasting Set Target Cpa Recommendation
googleads:RecommendationForecastingSetTargetCpaRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationForecastingSetTargetCpaRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationForecastingSetTargetCpaRecommendation/recommendedTargetCpaMicros> ;
    sh:name "recommended target cpa micros" ;
    sh:description "Output only. The recommended target CPA." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationForecastingSetTargetCpaRecommendation/campaignBudget> ;
    sh:name "campaign budget" ;
    sh:description "Output only. The campaign budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCampaignBudgetShape ;
    sh:class googleads:RecommendationCampaignBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Maximize Clicks Opt In Recommendation
googleads:RecommendationMaximizeClicksOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationMaximizeClicksOptInRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMaximizeClicksOptInRecommendation/recommendedBudgetAmountMicros> ;
    sh:name "recommended budget amount micros" ;
    sh:description "Output only. The recommended new budget amount. Only set if the current budget is too high." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Performance Max Opt In Recommendation
googleads:RecommendationPerformanceMaxOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationPerformanceMaxOptInRecommendation .

# Shape for Recommendation Shopping Target All Offers Recommendation
googleads:RecommendationShoppingTargetAllOffersRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationShoppingTargetAllOffersRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingTargetAllOffersRecommendation/merchant> ;
    sh:name "merchant" ;
    sh:description "Output only. The details of the Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMerchantInfoShape ;
    sh:class googleads:RecommendationMerchantInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingTargetAllOffersRecommendation/untargetedOffersCount> ;
    sh:name "untargeted offers count" ;
    sh:description "Output only. The number of untargeted offers." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingTargetAllOffersRecommendation/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Output only. The offer feed label." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Improve Demand Gen Ad Strength Recommendation
googleads:RecommendationImproveDemandGenAdStrengthRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationImproveDemandGenAdStrengthRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationImproveDemandGenAdStrengthRecommendation/adStrength> ;
    sh:name "ad strength" ;
    sh:description "Output only. The current ad strength." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "PENDING" "NO_ADS" "POOR" "AVERAGE" "GOOD" "EXCELLENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationImproveDemandGenAdStrengthRecommendation/demandGenAssetActionItems> ;
    sh:name "demand gen asset action items" ;
    sh:description "Output only. A list of recommendations to improve the ad strength." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationImproveDemandGenAdStrengthRecommendation/ad> ;
    sh:name "ad" ;
    sh:description "Output only. The resource name of the ad that can be improved." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Responsive Search Ad Asset Recommendation
googleads:RecommendationResponsiveSearchAdAssetRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationResponsiveSearchAdAssetRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationResponsiveSearchAdAssetRecommendation/recommendedAssets> ;
    sh:name "recommended assets" ;
    sh:description "Output only. The recommended assets. This is populated only with the new headlines and/or descriptions, and is otherwise empty." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationResponsiveSearchAdAssetRecommendation/currentAd> ;
    sh:name "current ad" ;
    sh:description "Output only. The current ad to be updated." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Raise Target Cpa Bid Too Low Recommendation
googleads:RecommendationRaiseTargetCpaBidTooLowRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationRaiseTargetCpaBidTooLowRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRaiseTargetCpaBidTooLowRecommendation/averageTargetCpaMicros> ;
    sh:name "average target cpa micros" ;
    sh:description "Output only. The current average target CPA of the campaign, in micros of customer local currency." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRaiseTargetCpaBidTooLowRecommendation/recommendedTargetMultiplier> ;
    sh:name "recommended target multiplier" ;
    sh:description "Output only. A number greater than 1.0 indicating the factor by which we recommend the target CPA should be increased." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Move Unused Budget Recommendation
googleads:RecommendationMoveUnusedBudgetRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationMoveUnusedBudgetRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMoveUnusedBudgetRecommendation/budgetRecommendation> ;
    sh:name "budget recommendation" ;
    sh:description "Output only. The recommendation for the constrained budget to increase." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationCampaignBudgetRecommendationShape ;
    sh:class googleads:RecommendationCampaignBudgetRecommendation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMoveUnusedBudgetRecommendation/excessCampaignBudget> ;
    sh:name "excess campaign budget" ;
    sh:description "Output only. The excess budget's resource_name." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Use Broad Match Keyword Recommendation
googleads:RecommendationUseBroadMatchKeywordRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationUseBroadMatchKeywordRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationUseBroadMatchKeywordRecommendation/keyword> ;
    sh:name "keyword" ;
    sh:description "Output only. Sample of keywords to be expanded to Broad Match." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationUseBroadMatchKeywordRecommendation/campaignUsesSharedBudget> ;
    sh:name "campaign uses shared budget" ;
    sh:description "Output only. Whether the associated campaign uses a shared budget." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationUseBroadMatchKeywordRecommendation/campaignKeywordsCount> ;
    sh:name "campaign keywords count" ;
    sh:description "Output only. Total number of keywords in the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationUseBroadMatchKeywordRecommendation/suggestedKeywordsCount> ;
    sh:name "suggested keywords count" ;
    sh:description "Output only. Total number of keywords to be expanded to Broad Match in the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationUseBroadMatchKeywordRecommendation/requiredCampaignBudgetAmountMicros> ;
    sh:name "required campaign budget amount micros" ;
    sh:description "Output only. The budget recommended to avoid becoming budget constrained after applying the recommendation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Shopping Fix Disapproved Products Recommendation
googleads:RecommendationShoppingFixDisapprovedProductsRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationShoppingFixDisapprovedProductsRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingFixDisapprovedProductsRecommendation/productsCount> ;
    sh:name "products count" ;
    sh:description "Output only. The number of products of the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingFixDisapprovedProductsRecommendation/merchant> ;
    sh:name "merchant" ;
    sh:description "Output only. The details of the Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMerchantInfoShape ;
    sh:class googleads:RecommendationMerchantInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingFixDisapprovedProductsRecommendation/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Output only. The feed label for the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingFixDisapprovedProductsRecommendation/disapprovedProductsCount> ;
    sh:name "disapproved products count" ;
    sh:description "Output only. The numbers of products of the campaign that are disapproved." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Shopping Add Products To Campaign Recommendation
googleads:RecommendationShoppingAddProductsToCampaignRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationShoppingAddProductsToCampaignRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingAddProductsToCampaignRecommendation/reason> ;
    sh:name "reason" ;
    sh:description "Output only. The reason why no products are attached to the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MERCHANT_CENTER_ACCOUNT_HAS_NO_SUBMITTED_PRODUCTS" "MERCHANT_CENTER_ACCOUNT_HAS_NO_SUBMITTED_PRODUCTS_IN_FEED" "ADS_ACCOUNT_EXCLUDES_OFFERS_FROM_CAMPAIGN" "ALL_PRODUCTS_ARE_EXCLUDED_FROM_CAMPAIGN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingAddProductsToCampaignRecommendation/merchant> ;
    sh:name "merchant" ;
    sh:description "Output only. The details of the Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMerchantInfoShape ;
    sh:class googleads:RecommendationMerchantInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingAddProductsToCampaignRecommendation/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Output only. The feed label for the campaign." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Maximize Conversion Value Opt In Recommendation
googleads:RecommendationMaximizeConversionValueOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationMaximizeConversionValueOptInRecommendation .

# Shape for Recommendation Call Asset Recommendation
googleads:RecommendationCallAssetRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationCallAssetRecommendation .

# Shape for Recommendation Refresh Customer Match List Recommendation
googleads:RecommendationRefreshCustomerMatchListRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationRefreshCustomerMatchListRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRefreshCustomerMatchListRecommendation/targetingAccountsCount> ;
    sh:name "targeting accounts count" ;
    sh:description "Output only. User lists can be shared with other accounts by the owner. targeting_accounts_count is the number of those accounts that can use it for targeting." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRefreshCustomerMatchListRecommendation/topSpendingAccount> ;
    sh:name "top spending account" ;
    sh:description "Output only. The top spending account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationAccountInfoShape ;
    sh:class googleads:RecommendationAccountInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRefreshCustomerMatchListRecommendation/userListId> ;
    sh:name "user list id" ;
    sh:description "Output only. The user list ID." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRefreshCustomerMatchListRecommendation/daysSinceLastRefresh> ;
    sh:name "days since last refresh" ;
    sh:description "Output only. Days since last refresh." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRefreshCustomerMatchListRecommendation/ownerAccount> ;
    sh:name "owner account" ;
    sh:description "Output only. The owner account. This is the account that should update the customer list." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationAccountInfoShape ;
    sh:class googleads:RecommendationAccountInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRefreshCustomerMatchListRecommendation/userListName> ;
    sh:name "user list name" ;
    sh:description "Output only. The name of the list." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Account Info
googleads:RecommendationAccountInfoShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationAccountInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationAccountInfo/customerId> ;
    sh:name "customer id" ;
    sh:description "Output only. The customer ID of the account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationAccountInfo/descriptiveName> ;
    sh:name "descriptive name" ;
    sh:description "Output only. The descriptive name of the account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Enhanced Cpc Opt In Recommendation
googleads:RecommendationEnhancedCpcOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationEnhancedCpcOptInRecommendation .

# Shape for Recommendation Search Partners Opt In Recommendation
googleads:RecommendationSearchPartnersOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationSearchPartnersOptInRecommendation .

# Shape for Recommendation Upgrade Smart Shopping Campaign To Performance Max Recommendation
googleads:RecommendationUpgradeSmartShoppingCampaignToPerformanceMaxRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation/merchantId> ;
    sh:name "merchant id" ;
    sh:description "Output only. ID of Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationUpgradeSmartShoppingCampaignToPerformanceMaxRecommendation/salesCountryCode> ;
    sh:name "sales country code" ;
    sh:description "Output only. Country whose products from merchant's inventory should be included." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Lead Form Asset Recommendation
googleads:RecommendationLeadFormAssetRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationLeadFormAssetRecommendation .

# Shape for Recommendation Maximize Conversions Opt In Recommendation
googleads:RecommendationMaximizeConversionsOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationMaximizeConversionsOptInRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationMaximizeConversionsOptInRecommendation/recommendedBudgetAmountMicros> ;
    sh:name "recommended budget amount micros" ;
    sh:description "Output only. The recommended new budget amount." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Sitelink Asset Recommendation
googleads:RecommendationSitelinkAssetRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationSitelinkAssetRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationSitelinkAssetRecommendation/recommendedCampaignSitelinkAssets> ;
    sh:name "recommended campaign sitelink assets" ;
    sh:description "Output only. New sitelink assets recommended at the campaign level." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:Asset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationSitelinkAssetRecommendation/recommendedCustomerSitelinkAssets> ;
    sh:name "recommended customer sitelink assets" ;
    sh:description "Output only. New sitelink assets recommended at the customer level." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:Asset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Recommendation Optimize Ad Rotation Recommendation
googleads:RecommendationOptimizeAdRotationRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationOptimizeAdRotationRecommendation .

# Shape for Recommendation Custom Audience Opt In Recommendation
googleads:RecommendationCustomAudienceOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationCustomAudienceOptInRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCustomAudienceOptInRecommendation/keywords> ;
    sh:name "keywords" ;
    sh:description "Output only. The list of keywords to use for custom audience creation." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:KeywordInfoShape ;
    sh:class googleads:KeywordInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Recommendation Callout Asset Recommendation
googleads:RecommendationCalloutAssetRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationCalloutAssetRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCalloutAssetRecommendation/recommendedCampaignCalloutAssets> ;
    sh:name "recommended campaign callout assets" ;
    sh:description "Output only. New callout extension assets recommended at the campaign level." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:Asset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationCalloutAssetRecommendation/recommendedCustomerCalloutAssets> ;
    sh:name "recommended customer callout assets" ;
    sh:description "Output only. New callout extension assets recommended at the customer level." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:class googleads:Asset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Recommendation Shopping Migrate Regular Shopping Campaign Offers To Performance Max Recommendation
googleads:RecommendationShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation/merchant> ;
    sh:name "merchant" ;
    sh:description "Output only. The details of the Merchant Center account." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationMerchantInfoShape ;
    sh:class googleads:RecommendationMerchantInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Output only. The feed label of the offers targeted by the campaigns sharing this suggestion." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Display Expansion Opt In Recommendation
googleads:RecommendationDisplayExpansionOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationDisplayExpansionOptInRecommendation .

# Shape for Recommendation Raise Target Cpa Recommendation
googleads:RecommendationRaiseTargetCpaRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationRaiseTargetCpaRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRaiseTargetCpaRecommendation/targetAdjustment> ;
    sh:name "target adjustment" ;
    sh:description "Output only. The relevant information describing the recommended target adjustment." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:RecommendationTargetAdjustmentInfoShape ;
    sh:class googleads:RecommendationTargetAdjustmentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationRaiseTargetCpaRecommendation/appBiddingGoal> ;
    sh:name "app bidding goal" ;
    sh:description "Output only. Represents the goal towards which the bidding strategy should optimize. Only populated for App Campaigns." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "OPTIMIZE_FOR_INSTALL_CONVERSION_VOLUME" "OPTIMIZE_FOR_IN_APP_CONVERSION_VOLUME" "OPTIMIZE_FOR_TOTAL_CONVERSION_VALUE" "OPTIMIZE_FOR_TARGET_IN_APP_CONVERSION" "OPTIMIZE_FOR_RETURN_ON_ADVERTISING_SPEND" "OPTIMIZE_FOR_INSTALL_CONVERSION_VOLUME_WITHOUT_TARGET_CPI" "OPTIMIZE_FOR_PRE_REGISTRATION_CONVERSION_VOLUME" ) ;
  ] .

# Shape for Recommendation Target Roas Opt In Recommendation
googleads:RecommendationTargetRoasOptInRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationTargetRoasOptInRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetRoasOptInRecommendation/recommendedTargetRoas> ;
    sh:name "recommended target roas" ;
    sh:description "Output only. The recommended target ROAS (revenue per unit of spend). The value is between 0.01 and 1000.0, inclusive." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationTargetRoasOptInRecommendation/requiredCampaignBudgetAmountMicros> ;
    sh:name "required campaign budget amount micros" ;
    sh:description "Output only. The minimum campaign budget, in local currency for the account, required to achieve the target ROAS. Amount is specified in micros, where one million is equivalent to one currency unit." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Recommendation Improve Google Tag Coverage Recommendation
googleads:RecommendationImproveGoogleTagCoverageRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationImproveGoogleTagCoverageRecommendation .

# Shape for Recommendation Responsive Search Ad Recommendation
googleads:RecommendationResponsiveSearchAdRecommendationShape a sh:NodeShape ;
  sh:targetClass googleads:RecommendationResponsiveSearchAdRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.RecommendationResponsiveSearchAdRecommendation/ad> ;
    sh:name "ad" ;
    sh:description "Output only. Recommended ad." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:node googleads:AdShape ;
    sh:class googleads:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Per Store View
googleads:PerStoreViewShape a sh:NodeShape ;
  sh:targetClass googleads:PerStoreView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/postalCode> ;
    sh:name "postal code" ;
    sh:description "Output only. The postal code of the store's address." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the per store view. Per Store view resource names have the form: `customers/{customer_id}/perStoreViews/{place_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/address1> ;
    sh:name "address1" ;
    sh:description "Output only. First line of the store's address." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/city> ;
    sh:name "city" ;
    sh:description "Output only. The city where the store is located." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/province> ;
    sh:name "province" ;
    sh:description "Output only. The province or state of the store's address." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/businessName> ;
    sh:name "business name" ;
    sh:description "Output only. The name of the business." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/countryCode> ;
    sh:name "country code" ;
    sh:description "Output only. The two-letter country code for the store's location (e.g., \"US\")." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "Output only. The phone number of the store." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/placeId> ;
    sh:name "place id" ;
    sh:description "Output only. The place ID of the per store view." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.PerStoreView/address2> ;
    sh:name "address2" ;
    sh:description "Output only. Second line of the store's address." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Expansion View
googleads:TargetingExpansionViewShape a sh:NodeShape ;
  sh:targetClass googleads:TargetingExpansionView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.TargetingExpansionView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the targeting expansion view. Targeting expansion view resource names have the form: `customers/{customer_id}/targetingExpansionViews/{campaign_id}~{targeting_expansion_type}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Mobile Device Constant
googleads:MobileDeviceConstantShape a sh:NodeShape ;
  sh:targetClass googleads:MobileDeviceConstant ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileDeviceConstant/operatingSystemName> ;
    sh:name "operating system name" ;
    sh:description "Output only. The operating system of the mobile device." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileDeviceConstant/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the mobile device constant. Mobile device constant resource names have the form: `mobileDeviceConstants/{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileDeviceConstant/type> ;
    sh:name "type" ;
    sh:description "Output only. The type of mobile device." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "UNKNOWN" "MOBILE" "TABLET" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileDeviceConstant/id> ;
    sh:name "id" ;
    sh:description "Output only. The ID of the mobile device constant." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileDeviceConstant/name> ;
    sh:name "name" ;
    sh:description "Output only. The name of the mobile device." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.MobileDeviceConstant/manufacturerName> ;
    sh:name "manufacturer name" ;
    sh:description "Output only. The manufacturer of the mobile device." ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Shopping Performance View
googleads:ShoppingPerformanceViewShape a sh:NodeShape ;
  sh:targetClass googleads:ShoppingPerformanceView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.ShoppingPerformanceView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the Shopping performance view. Shopping performance view resource names have the form: `customers/{customer_id}/shoppingPerformanceView`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Location View
googleads:LocationViewShape a sh:NodeShape ;
  sh:targetClass googleads:LocationView ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/googleads/property/Googleads.LocationView/resourceName> ;
    sh:name "resource name" ;
    sh:description "Output only. The resource name of the location view. Location view resource names have the form: `customers/{customer_id}/locationViews/{campaign_id}~{criterion_id}`" ;
    relay:writeLifecycle relay:ReadOnly ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .
